幻兽帕鲁搭建+内网穿透

最近游戏幻兽帕鲁大火,和朋友一起多人游戏用官方服务器有诸多限制,遂自建服务器,由于游戏需要较大的内存,租用各种云的大内存机器又太贵了,手头上又有符合要求的闲置电脑,考虑使用闲置电脑+内网穿透自建服务器。试了试免费的内网穿透效果不尽人意,尝试租用最便宜的云服务器+自建frp进行穿透。

搭建游戏服务器

  1. 安装并运行 steamcmd

  2. 匿名登录steam社区,并下载/更新游戏服务端

    1
    2
    3
    4
    5
    6
    # 匿名登录
    login anonymous
    # 下载/更新游戏服务端
    app_update 2394010 validate
    # 退出steamcmd
    quit
  3. 启动游戏服务端

    1
    2
    3
    4
    # 切换到游戏目录
    cd steamapps/common/PalServer
    # 启动游戏
    PalServer.exe
  4. 编辑配置文件

    服务端启动后,没有玩家登录是没有存档的,可以先登录游戏生成存档,然后再根据偏好修改游戏配置。

    修改游戏配置 Pal/Saved/Config/WindowsServer/PalWorldSettings.ini,初始化时为空,可拷贝默认配置 DefaultPalWorldSettings.ini 修改。修改完成后需要重启服务端才会生效。

配置项 默认值 说明
Difficulty None 难度:None、Difficulty
DayTimeSpeedRate 1.000000 白天流逝速度(0.1到5)
NightTimeSpeedRate 1.000000 夜晚流逝速度(0.1到5)
ExpRate 1.000000 经验值倍率(0.1到20)
PalCaptureRate 1.000000 捕捉概率倍率(0.5到2)
PalSpawnNumRate 1.000000 帕鲁生成数量倍率(0.5到3,过高会卡)
PalDamageRateAttack 1.000000 帕鲁攻击伤害倍率(0.1到5)
PalDamageRateDefense 1.000000 帕鲁承受伤害倍率(0.1到5)
PlayerDamageRateAttack 1.000000 玩家攻击伤害倍率(0.1到5)
PlayerDamageRateDefense 1.000000 玩家承受伤害倍率(0.1到5)
PlayerStomachDecreaceRate 1.000000 玩家饱食度降低倍率(0.1到5)
PlayerStaminaDecreaceRate 1.000000 玩家耐力倍率(0.1到5)
PlayerAutoHPRegeneRate 1.000000 玩家生命值恢复倍率(0.1到5)
PlayerAutoHpRegeneRateInSleep 1.000000 玩家睡眠时生命恢复倍率(0.1到5)
PalStomachDecreaceRate 1.000000 帕鲁饱食度降低倍率(0.1到5)
PalStaminaDecreaceRate 1.000000 帕鲁耐力降低倍率(0.1到5)
PalAutoHPRegeneRate 1.000000 帕鲁生命值自然恢复倍率(0.1到5)
PalAutoHpRegeneRateInSleep 1.000000 帕鲁在终端时生命恢复倍率(0.1到5)
BuildObjectDamageRate 1.000000 对建筑物伤害倍率(0.5到3)
BuildObjectDeteriorationDamageRate 1.000000 建筑物劣化速度倍率(0到10)
CollectionDropRate 1.000000 可采集物品掉落倍率(0.5到3)
CollectionObjectHpRate 1.000000 可采集物品生命值倍率(0.5到3)
CollectionObjectRespawnSpeedRate 1.000000 可采集物品生成速率(0.5到3)
EnemyDropItemRate 1.000000 敌方掉落物品率(0.5到3)
DeathPenalty All 死亡惩罚:None无掉落、Item掉落物品、ItemAndEquipment掉落物品、装备、All掉落物品、装备、帕鲁
bEnablePlayerToPlayerDamage False 玩家PvP伤害:True开启、False关闭
bEnableFriendlyFire False 公会间队员的火焰伤害:True开启、False关闭
bEnableInvaderEnemy True 袭击事件:True开启、False关闭
bActiveUNKO False 官方暂无说明
bEnableAimAssistPad True 允许瞄准辅助手柄:True启用、False关闭
bEnableAimAssistKeyboard False 准星:True启用、False关闭
DropItemMaxNum 3000 掉落物品最大数量
DropItemMaxNum_UNKO 100 掉落物品最大数量_UNKO
BaseCampMaxNum 128 据点最大数量
BaseCampWorkerMaxNum 15 据点工作者最大值
DropItemAliveMaxHours 1.000000 掉落物品存在最大时长
bAutoResetGuildNoOnlinePlayers False 自动重置没有在线玩家的公会:True开启、False关闭
AutoResetGuildTimeNoOnlinePlayers 72.000000 无在线玩家时自动重置生成时间
GuildPlayerMaxNum 20 公会玩家最大数量(1-100)
PalEggDefaultHatchingTime 72.000000 帕鲁蛋默认孵化时间(0到240)
WorkSpeedRate 1.000000 工作速率
bIsMultiplay False 多人游戏:True开启、False关闭
bIsPvP False PvP:True开启、False关闭
bCanPickupOtherGuildDeathPenaltyDrop False 可拾取其他公会的死亡掉落物:True开启、False关闭
bEnableNonLoginPenalty True 不登录惩罚:True开启、False关闭
bEnableFastTravel True 快速旅行:True开启、False关闭
bIsStartLocationSelectByMap True 通过地图选择起始位置:True开启、False关闭
bExistPlayerAfterLogout False 玩家退出游戏后仍然存在:True开启、False关闭
bEnableDefenseOtherGuildPlayer False 启用防御其他公会玩家功能:True开启、False关闭
CoopPlayerMaxNum 4 合作玩家最大人数
ServerPlayerMaxNum 32 服务器玩家最大人数
ServerName “Default Palworld Server” 服务器名称
ServerDescription “” 服务器描述
AdminPassword “” 管理员密码(在游戏内输入「/AdminPassword 密码」可以认证为管理员)
ServerPassword “” 服务端密码
PublicPort 8211 服务器端口
PublicIP “” 服务器监听的IP(用于多网卡服务器)
RCONEnabled False 启用 RCON
RCONPort 25575 RCON端口
Region “” 地区
bUseAuth True 授权认证:True开启、False关闭
BanListURL https://api.palworldgame.com/api/banlist.txt 封禁用户列表URL

搭建穿透服务器

  1. 下载frp

  2. 解压,并修改frp服务端配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    # 解压
    tar -zxvf frp_0.53.2_linux_arm64.tar.gz
    # 进入frp文件夹
    cd frp_0.53.2_linux_arm64
    # 创建日志目录
    mkdir logs
    # 编辑frp服务端配置
    vi frps.toml

    供参考的配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [common]
    # frp监听的端口,默认是7000,可以改成其他的
    bind_port = 7000
    # 授权码(修改为其他)
    token = xxxxxxxxxxx

    # frp管理后台端口
    dashboard_port = 7500
    # frp管理后台用户名和密码(修改为其他)
    dashboard_user = admin
    dashboard_pwd = xxxxxxxxx
    enable_prometheus = true
    tls_enable = true

    # frp日志配置,修改为实际路径
    log_file = /home/ubuntu/frp_0.53.2_linux_amd64/logs/frps.log
    log_level = error
    log_max_days = 3
  3. 启动frps服务端

    1
    ./frps -c ./frps.toml

    访问服务器的面板,如果没问题说明内网穿透快成功了,可以将frp设置以服务的方式启动。

    1
    sudo vim /etc/systemd/system/frps.service

    粘贴以下配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target

    [Service]
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    ExecStart = /home/ubuntu/frp_0.53.2_linux_amd64/frps -c /home/ubuntu/frp_0.53.2_linux_amd64/frps.ini

    [Install]
    WantedBy = multi-user.target
    1
    2
    # 启动frps服务端
    sudo systemctl start frps
  4. 开放防火墙

    不同版本系统的防火墙可能不一样

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # iptables
    iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
    iptables -A INPUT -p udp --dport 8211 -j ACCEPT
    # ufw
    ufw allow 7000/tcp
    ufw allow 8211/udp
    # firewalld-cmd
    firewall-cmd --zone=public --add-port=7000/tcp --permanent
    firewall-cmd --zone=public --add-port=8211/udp --permanent
    firewall-cmd --reload
  5. 在游戏服务端的机器部署frp客户端转发流量到云服务器

(1) 下载、解压、修改frpc.toml配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 客户端配置
[common]
# 修改为云服务器IP
server_addr = 0.0.0.0
server_port = 7000
# token需要与服务端一致
token = xxxxxxxx
# 转发加密,可根据需求选择是否开启
tls_enable = true
# 转发Palworld服务
[Pal]
type = udp
local_ip = 127.0.0.1
# 本地端口
local_port = 8211
# 服务器映射后对外开放端口
remote_port = 8211

(2) 启动frpc客户端

1
frpc -c ./frpc.toml