想和小伙伴一起玩帕鲁,但是又不想忍受付费服务器后各种可能的延迟,跑路,存档消失等问题?
如果你尚有余力(指拥有一台8G及以上的电脑,且有条件访问IPv6),不如试试这个方法自己搭一个。
搭建服务器
Win下
下载steamCMD:https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
新建文件夹,放入其中,解压缩
之后在此打开ps或者cmd,使用以下命令:
steamcmd +login anonymous +app_update 2394010 validate +quit
进入:
cd .\steamapps\common\PalServer
执行 PalServer.exe
linux下
比较复杂,请进入官方手册按提示安装:https://tech.palworldgame.com/getting-started/deploy-dedicated-server
服务器更新:
按照安装部分流程进行一次就行了
使用IPV6进行公网通信
大前提:能够正常使用ipv6且拥有公网网址,其他玩家也要有v6地址
众所周知,很多游戏服务器不支持ipv6,也包括帕鲁。
原理:通过端口映射转发数据,服务器将本地ip端口等v4信息转发到v6公网网址,然后客户端通过公网网址将v6端口信息转发到v4端,形成一个虚拟局域网
使用各种端口映射软件即可,这里使用tinymapper
因为v6网址多变,这里建议使用ddns网站申请一个域名,并且配合ddns-go等工具按时检测并更新网址解析。这样可以保证动态改正你的v6地址,就不用每次手动检测和更改地址了。
拥有域名后可搭配tinymapper进行解析:
客户端命令(cmd):
@echo off
chcp 65001
echo 主机域名开启服务器
set hostWWW=你的域名
set IPv6Address=
set mapPort=8211
set hostPort=40800
for /f "tokens=*" %%t in ('Nslookup %hostWWW%^| findstr /B /C:"Addresses:"') do (
for /F "tokens=2 delims= " %%a IN ("%%t") DO (
set "IPv6Address=%%a"
goto :gotIPv6
)
)
:gotIPv6
if not defined IPv6Address (
echo 没有找到有效的IPv6地址,请确保主机支持并配置了IPv6!
) else (
echo 找到的IPv6地址为:%IPv6Address%
tinymapper.exe -l127.0.0.1:%mapPort% -r[%IPv6Address%]:%hostPort% -u
)
pause
服务端命令(cmd):
@echo off
chcp 65001
echo 主机域名开启服务器
set hostWWW=你的域名
set IPv6Address=
set mapPort=8211
set hostPort=40800
for /f "tokens=*" %%t in ('Nslookup %hostWWW%^| findstr /B /C:"Addresses:"') do (
for /F "tokens=2 delims= " %%a IN ("%%t") DO (
set "IPv6Address=%%a"
goto :gotIPv6
)
)
:gotIPv6
if not defined IPv6Address (
echo 没有找到有效的IPv6地址,请确保主机支持并配置了IPv6!
) else (
echo 找到的IPv6地址为:%IPv6Address%
tinymapper.exe -l[%IPv6Address%]:%hostPort% -r127.0.0.1:%mapPort% -u
)
pause
以上命令原理为:
tinymapper参数说明: -l本地的ip地址 -r目标的ip地址 -u表示这是udp连接 -t表示这是tcp连接
首先Nslookup解析域名得到IPv6地址,再借由tinymapper 在服务端将本地端口转发到公网端口,在客户端则相反。如果脚本报错请检查报错信息,解析v6地址部分请参考自己Nslookup的返回格式。
按服务器开启后,执行服务端命令,这样服务端准备工作就完成了。
在客户端,执行客户端命令,由于绑定的转发地址是127.0.0.1且端口默认为8211
所以进入多人界面地址栏不用修改即可直接加入游戏!