最近游戏幻兽帕鲁大火,和朋友一起多人游戏用官方服务器有诸多限制,遂自建服务器,由于游戏需要较大的内存,租用各种云的大内存机器又太贵了,手头上又有符合要求的闲置电脑,考虑使用闲置电脑+内网穿透自建服务器。试了试免费的内网穿透效果不尽人意,尝试租用最便宜的云服务器+自建frp进行穿透。
搭建游戏服务器
安装并运行 steamcmd
匿名登录steam社区,并下载/更新游戏服务端
1
2
3
4
5
6# 匿名登录
login anonymous
# 下载/更新游戏服务端
app_update 2394010 validate
# 退出steamcmd
quit启动游戏服务端
1
2
3
4# 切换到游戏目录
cd steamapps/common/PalServer
# 启动游戏
PalServer.exe编辑配置文件
服务端启动后,没有玩家登录是没有存档的,可以先登录游戏生成存档,然后再根据偏好修改游戏配置。
修改游戏配置
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 |
搭建穿透服务器
解压,并修改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启动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.target1
2# 启动frps服务端
sudo systemctl start frps开放防火墙
不同版本系统的防火墙可能不一样
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在游戏服务端的机器部署frp客户端转发流量到云服务器
(1) 下载、解压、修改frpc.toml
配置文件
1 | # 客户端配置 |
(2) 启动frpc客户端
1 | frpc -c ./frpc.toml |