前言

最近palworld比较火,开服问题成了一个热门话题,为了解答我身边朋友的疑惑,特写此文

如果你是玩家,请直接跳转下面客户端配置

或者你有什么问题,可以先查阅下面的问答环节

服务器配置

具体配置流程

windows开服

首先是windows开服,这里官方也给出了流程

官方流程点此

这里不再赘述,直接看Windows - Steam

看图就能理解
官方流程

官方流程

官方流程

官方流程

这个框就是服务器程序了,不要把他关掉

然后测试一下,进入游戏,输入127.0.0.1:8211 进入服务器,如果能进,说明开好服务器了

接下来的流程是让这个服务器别人也可以连接

zerotier组网

注册zerotier

先注册zerotier
my.zerotier.com
zerotier网站

注册

注册

注册

注册完以后,新建一个网络

新建网络

点进新加入的网络

点击settings

把认证调成公共

打开公共,以后就不用过来认证了

记下这个network id之后连接需要用到,以我的id为例9e1948db63c39e10

服务器端加入zerotier网络和配置批处理文件

点此下载我配置好的bat文件模板

如果用edge浏览器可能会变成这样

保留

跟着图走就行

保留

接下来右键编辑他

编辑

编辑

编辑

把网络id,就是上文network id,我这里是9e1948db63c39e10改进去
编辑

如果你已经安装过zerotier,要手动加入网络,点下面打开查看内容

点此查看折叠内容

如果没安装过,保存以后运行,之后只需要看下面

查看状态

查看状态

看这个status,如果status是OK说明已经加入了网络


查看状态

记住这个ip,这个ip就是你本机的ip,也就相当于服务器ip

以我的ip为例,服务器ip端口就是

172.23.228.90:8211

可以把这个改成你的ip+端口

填入 172.23.228.90:8211
改ip

至此服务器配置完成,只需要把这个文件发给其他人,让小伙伴们点这个文件就行了

客户端配置

服主可以把这里发给小伙伴看,传送门链接如下

https://www.pursuecode.cn/archives/1706195986213#客户端配置

没有安装zerotier(第一次进服务器的小伙伴)

客户端(小伙伴)只需要下载服主配置好的批处理文件,双击运行

编辑

编辑

安装完成后

右下角应该会有个图标

zerotier图标

接下来点右键可以看到他的连接状态

zerotier

如果没问题的话,status那栏应该和我一样是ok

然后就能进服了

如果你已经安装过zerotier,要手动加入网络,点下面打开查看内容,然后跳过下面的运行流程,直接ip进服,一般默认你没有

点此查看折叠内容 这里要输入服主给的zerotier network id

已经安装zerotier

如果你已经安装过zerotier,要手动加入网络。

如果确定自己已经安装了zerotier,点下面打开查看内容,设置完以后直接ip进服就行了

点此查看折叠内容 这里要输入服主给的zerotier network id

进服

进服流程1

进服流程2

Q&A

Zerotier和网速的关系?

Zerotier一般能吃满上传下载,一般的家用网络都没问题,一般超过10Mbps就可以,低于这个数建议2-4个人玩
网速测试可以进下面网站测试
中国科学院测速(国内推荐使用)
https://speedtest.net

zerotier有时候连不上,或者status显示REQUESTING CONFIGURATION

这个和网络质量有关,建议更换网络或者搭建moon节点,一般来说只要等待2分钟就行
排查方法如下

首先看右下角有没有zerotier图标
延迟

ps: 有没有zerotier标志和能不能连接一般没有关系

如果没有找到zerotier图标,先按win+s ,然后直接打字输入 zerotier,有的话请无视

打开zerotier

双击打开,此时右下角会出现zerotier标志,若仍然没有,请查看折叠的任务栏中

打开zerotier

然后右键,鼠标放到网络id上,查看status状态。
状态

一般分为三个状态

  1. OK
  2. REQUESTING_CONFIGURATION
  3. ACCESS_DENYED

ok就是已经连接上了,一般都是REQUESTING CONFIGURATION,可以点下面有个disconnect,然后再点reconnect,5分钟重试一次一般都能连上,如果实在连不上建议搭建moon节点
重连
如果是ACCESS_DENYED,检查上面type是不是public,如果是private,则需要在zerotier里面确认加入,请参考上面服务器配置,将zerotier节点配置为public免确认,如果缺了这一步就会变成这样,
不行就像上面一样reconnect一次,如果不行请重新安装

移动网请注意,一般移动网是默认墙zerotier planet节点的,也就会出现REQUESTING CONFIGURATION,同时zerotier后台看不到你加入的请求,这种情况,如果是其他节点relay还好说

如果是这种情况可以在cmd里输入zerotier-cli peers确认,若出现planet relay则说明planet无法下发配置,也就进不了zerotier网络

可以尝试替换planet节点,将planet替换文件(点此下载)替换C:\ProgramData\ZeroTier\One目录下的planet文件再尝试重连

若出现权限问题能直接覆盖就覆盖

若不能覆盖,先将他移动到C盘根目录,如图

然后打开cmd输入copy C:\planet C:\ProgramData\ZeroTier\One

输入yes覆盖后,尝试重连,若仍不能解决建议添加frp线路分流

延迟和人数上限?

由于zerotier原理,一般来说延迟能到30ms左右,人数能到32人封顶(因为zerotier一个网络节点只能25个人,25人以上需要创建两个网络,从zerotier层面上来说不考虑内存,可以无限人数游玩,这里的32人是palworld服务器人数限制)
延迟

还要开加速器吗

不准确的来说zerotier就是所谓的加速器,不要开别的加速器了

闪退?

和zerotier没关系,是游戏特色

您正尝试加入的比赛正在运行不兼容的游戏版本。请尝试升级游戏版本。

首先确认服务器最新版本,如果不是最新版本,把服务器关掉然后检验完整性

点击属性

点击属性
检验完整性

换人开服务器,存档如何覆盖?

点击属性

点pal

点击属性

存档

把这个Saved文件夹打包,另一个要开服的电脑先开一次服务器,再关掉服务器

等服务器生成文件以后把Saved文件夹粘贴到pal文件夹下,覆盖这文件夹就行了

主要起作用的是如下文件

Pal/Saved/SaveGames/0/xxxxxxxx/Level.sav

包括背包,人物等级,地图结构都存在里面

换人开服务器?

如果你已经在zerotier网络里面,换个说法就是你已经进过服务器了,只需要像上面一样替换上一个人开服的人的存档,然后提供给别人你自己的zerotier ip,别人连接的时候只需要换成你的ip就行了

比如上次是A开服,ip10.64.1.4,下一个开服的人是B,zerotierip10.64.1.5,那么B需要得到A的存档,像上面的问题一样覆盖存档,开服以后其他人连接只需要输入10.64.1.5:8211就行了

如何看自己ip可以看上面服务器配置有写

如果不在网络里面先加入网络,按照上面服务端配置加入

单人存档如何继承到另一个服务器,例如共享背包

结论:不可以

炸服以后的操作

服务器需要手动重启服务器进程,这个过程很短,熟练以后5秒就能重开,炸服的时候并没有任何提示,直接显示网络连接超时,而且这个黑框还是会在的,把黑框关掉之后重启

写详细点,重开是重开这个palworld dedicated server
重开

黑框要关掉后重启

黑框要关掉后重启

其他人等待10秒后就可以直接进服

不必担心存档问题,一般他会回档到20秒以前

如果连上zerotier进服很卡怎么办

首先排查是否直连
win+r输入cmd,回车

打开cmd

输入

zerotier-cli peers

peers

找到自己的id对应的那行

如果是DIRECT则是正常的,说明是网络质量问题

如果是RELAY,则说明连接出现问题,需要中转节点。可以试着reconnect,若仍不行说明NAT层数太多,打不通洞,意味着需要换网络环境

id查看方法

zerotier-cli info

id

如果已经加入了别人的zerotier网络,会和当前网络冲突吗?能两边zerotier服务器互相串着玩吗

不会冲突,理论上来说只要网段不同,不需要改配置,连接的时候更换ip就能进到不同的服务器

如果网段冲突,一般来说ip也不会冲突,所以根本没有必要担心这个问题

如何看自己zerotier的ip

方法一

之前服务器配置有提到过,可以从zerotier的ui里看,点此跳转

方法二

cmd查看
仍然是win+r输入cmd
打开cmd

在框框里输入ipconfig
ipconfig

往下找到zerotier对应的network id的网卡,仍然以9e1948db63c39e10为例子

查看自己的zerotier ip

方法三

查看自己的zerotier ip

查看自己的zerotier ip

仍然以9e1948db63c39e10为例子

找到9e1948db63c39e10的适配器

查看自己的zerotier ip

查看自己的zerotier ip

查看自己的zerotier ip

自动重启服务器

@echo off
set PROCESS_NAME=PalServer.exe
set PATH=F:\Program Files\steam\steamapps\common\PalServer
:LOOP
tasklist | findstr /i "%PROCESS_NAME%" > nul
if %errorlevel% equ 0 (
echo [%DATE% %TIME%] Process is running.
) else (
echo [%DATE% %TIME%] Process is not running. Starting it now...
start "" "%PATH%\%PROCESS_NAME%"
)

timeout /t 10 > nul
goto LOOP

第三行的PATH改成服务器进程根目录,另存为bat或cmd文件双击运行即可

存档丢失解决方法

只要有Saved存档备份就能回档,所以要定期存档

2024-02-07,更新版本后喜提存档丢失

被迫回档到2024-01-30,并写了一个自动备份bat,放到PalServer\Pal文件夹下,并创建backup文件夹就可以使用了

@echo off
F:
cd %~dp0
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
set "day=%%c"
set "month=0%%b"
set "year=%%a"
)


set "formatted_date=%year%-%month:~-2%-%day:~-2%"

set "zip_filename=Saved %formatted_date%.zip"

7z a "backup/%zip_filename%" "Saved"

这个批处理会自动备份Saved文件夹,压缩成zip放到backup文件夹中

这次存档丢失也有我的责任,因为我很久没上线了没有随手备份存档,也应该预想到这种问题的

服务器连接不上?

首先cmd不要让他变成选择状态,会卡服

要右键点一下把他点到运行状态,这个问题很常见请特别小心

然后尝试重启服务器,打开cmd输netstat -ano|findstr 8211看一下是否存在监听接口

存在udp则说明服务器没问题,接着排除防火墙问题

win+s搜索防火墙,打开高级防火墙设置

点击添加入站

点击新建规则

添加端口

添加udp端口

然后一直点下一页直到完成,再尝试连接

密码问题

出现No password has been entered检查你的配置是否存在密码

windows配置文件在PalServer\Pal\Saved\Config\WindowsServer\PalWorldSettings

看里面password的地方

若想取消密码直接不填,即ServerPassword=""

原理(可跳过) 2025/01/05 填坑

以下为个人见解,不一定准确

Zerotier是基于P2P的直连nat打洞软件, 说人话就是可以让两个没有公网ip的客户端通过中继服务器建立连接后,直接越过中继连接,建立连接后不通过中继服务器

连接流程如下,以客户端A向客户端B发起请求为例,假设moon节点(中继服务器)为M

  1. A 向 M 请求
  2. M 如果拥有 B 的相关信息,则直接发给 A, 使得 A 获取到通信 B 的相关信息,则直接和 B 建立通信

但如果是 M 没有 B 相关信息的情况呢?

这种情况一般会打洞失败,由于 B 没有在网络中通信,理论上是无法连接的

为了实现这一点,Zerotier在连接后会向网络中所有节点广播发送包以保持在线,并学习有response的路由并记录,一般通过默认moon节点连接到所有节点

node/Network.cpp

所以就会出现这样的现象

第一次ping会延迟很高,后面延迟就会下降

顺带一提,zerotier和wireguard不太一样,默认发送的包是带有加密压缩的

所以你要想在zerotier里面再传送加密代理流量,很容易被运营商QOS,包括TLS,我就因为这个zerotier断网过