服务器环境
- CentOS 8.2
- CPU:4核 内存:16GB 公共带宽:10Mbps
因为现在幻兽帕鲁服务端优化问题不会自动释放内存,服务器配置选择最好是16G内存以上,甚至可以通过添加swap虚拟内存来 缓解爆内存炸服。
安装SteamCMD
1.安装SteamCMD相关依赖
通过root用户连接云服务器之后输入以下命令安装安装SteamCMD相关依赖
- RedHat/CentOS:
yum install glibc libstdc++ -y
- RedHat/CentOS 64-Bit
yum install glibc.i686 libstdc++.i686 -y
两个都要安装
安装screen方便之后服务端在后台托管运行:
yum install -y screen
2.为系统创建steam用户
接下来所有都必须在steam用户上进行,而不是root用户
创建steam用户并切换至steam用户:
useradd steam
su - steam
切换至steam用户后终端用户名会显示
steam@
而不是root@
3.下载运行SteamCMD
下载并解压并安装适用于 Linux 的 SteamCMD:
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
./steamcmd.sh
安装完成后出现
Steam>
就是安装成功
退出SteamCMD:
quit
搭建幻兽帕鲁服务端
1.下载幻兽帕鲁服务端
启动SteamCMD并指定幻兽帕鲁服务端安装路径:
./steamcmd.sh
force_install_dir /home/steam/palworld
我这里是把服务端安装在/home/steam文件夹方便管理
匿名登陆SteamCMD并下载幻兽帕鲁服务端:
login anonymous
app_update 2394010 validate
这一步根据服务器网络情况可能比较慢需要耐心等待,下载成功后会显示
Success! App '2394010' fully installed.
退出SteamCMD:
quit
2.启动幻兽帕鲁服务端
进入刚才安装幻兽帕鲁服务端的位置并尝试启动服务端:
cd /home/steam/palworld/
./PalServer.sh
这时候启动服务端可能会显示以下错误信息:
/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/steam/.steam/sdk64/steamclient.so
解决办法:
先Ctrl+C关掉服务端
再次打开SteamCMD获取Linux 64-Bit steamclient.so:
cd /home/steam/
./steamcmd.sh
login anonymous
app_update 1007
quit
把steamclient.so复制到/home/steam/.steam/sdk64/:
mkdir -p /home/steam/.steam/sdk64/
cp /home/steam/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so /home/steam/.steam/sdk64/
再次尝试启动服务端:
cd /home/steam/palworld/
./PalServer.sh
出现以下信息代表服务端启动成功,可以进游戏连接服务器测试连通性:
[S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
游戏能正常进入服务器后Ctrl+C关掉服务端进行下一步。
在专用服务器输入IP:8211连接
记得在云服务器防火墙放行8211端口
服务端维护以及配置
1.编写一键启动服务端的shell脚本
因为现在服务端的启动方式需要终端窗口一直存在,关掉终端窗口会让服务端也关掉,所以需要通过screen让服务端在后台运行。
创建启动脚本:
vim /home/steam/start_palserver.sh
输入以下内容并保存:
cd /home/steam/palworld
screen ./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS这几个参数官方表示可以优化性能建议加上
赋予脚本运行权限:
chmod 777 /home/steam/start_palserver.sh
现在就能用脚本一键通过screen启动服务端并在后台运行了:
cd /home/steam
./start_palserver.sh
Ctrl+A+D把screen窗口挂在后台
screen -r
恢复screen窗口Ctrl+C关闭screen窗口(相当于关闭服务端)
2.创建swap虚拟内存(可选)
因为现在幻兽帕鲁的服务端不会自动释放内存,就算是16G的服务器长时间运行也可能内存溢出炸服,创建swap虚拟内存一定程度上可以降低炸服的概率,即便这样每天手动重启一次服务器释放内存也是必要的。
这一步需要使用root用户,用root用户新建一个连接窗口即可
依次输入以下命令:
sudo mkdir /swap
sudo dd if=/dev/zero of=/swap/mySwap bs=1M count=8192
sudo mkswap /swap/mySwap
sudo swapon /swap/mySwap
sudo sed -i '$a /swap/mySwap swap swap default 0 0' /etc/fstab
这样是创建了8G的swap虚拟内存,可以根据自己实际情况调整大小,输入free -m
出现以下信息就是创建swap成功:
Swap: 8191 0 8191
这一步输入命令后过程比较慢,耐心等待
3.修改服务器配置文件
服务端可以正常运行后你肯定希望能自定义服务端的名字,密码,描述,难度等配置。
首先打开服务端的默认配置文件把里面的内容复制到自己电脑上的文本编辑器:
vim /home/steam/palworld/DefaultPalWorldSettings.ini
这里我也直接提供一份默认配置文件供复制:
; This configuration file is a sample of the default server settings.
; Changes to this file will NOT be reflected on the server.
; To change the server settings, modify Pal/Saved/Config/LinuxServer/PalWorldSettings.ini.
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(Difficulty=None,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=All,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,bIsMultiplay=False,bIsPvP=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")
可以按自己的需求修改配置文件的值,以下是常用配置项用途的参考:
配置项 | 中文释义 |
---|---|
Difficulty | 难度,一般用默认的None就行,难度主要是和下面的数值倍率挂钩 |
DayTimeSpeedRate | 白天流逝速度 |
NightTimeSpeedRate | 夜晚流逝速度 |
ExpRate | 经验值倍率 |
PalCaptureRate | 捕获概率倍率 |
PalSpawnNumRate | 帕鲁出现数量概率 |
PalDamageRateAttack | 帕鲁攻击伤害倍率 |
PalDamageRateDefense | 帕鲁承受伤害倍率 |
PlayerDamageRateAttack | 玩家攻击伤害倍率 |
PlayerDamageRateDefense | 玩家承受伤害倍率 |
PlayerStomachDecreaceRate | 玩家饱食度降低倍率 |
PlayerStaminaDecreaceRate | 玩家耐力降低倍率 |
PlayerAutoHPRegeneRate | 玩家生命值自然恢复倍率 |
PlayerAutoHpRegeneRateInSleep | 玩家睡眠时生命值恢复倍率 |
PalStomachDecreaceRate | 帕鲁饱食度降低倍率 |
PalStaminaDecreaceRate | 帕鲁耐力降低倍率 |
PalAutoHPRegeneRate | 帕鲁生命值自然恢复倍率 |
PalAutoHpRegeneRateInSleep | 帕鲁睡眠时生命值恢复倍率 |
BuildObjectDamageRate | 对建筑伤害倍率 |
BuildObjectDeteriorationDamageRate | 建筑物的劣化速度倍率 |
CollectionDropRate | 道具采集量倍率 |
CollectionObjectHpRate | 可采集物品生命值倍率 |
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 | 工会人数上限 |
PalEggDefaultHatchingTime | 巨大蛋孵化所需时间(小时) |
ServerPlayerMaxNum | 服务器最大人数上限 |
ServerName | 服务器名字 |
ServerDescription | 服务器描述内容 |
AdminPassword | 管理员密码 |
ServerPassword | 服务器密码(防止陌生人进入服务器捣乱) |
PublicPort | 服务器端口(默认8211) |
PublicIP | 公共IP |
RCONEnabled | 是否启用RCON |
RCONPort | RCON端口 |
DropItemMaxNum | 世界内的掉落物上限 |
BaseCampWorkerMaxNum | 可分派至据点工作的帕鲁数量上限 |
bEnableInvaderEnemy | 是否会发生袭击事件 |
修改完成后把改好的配置粘贴到服务端的配置文件/home/steam/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
vim /home/steam/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
保存后重启服务端即可生效
4.服务器管理员命令
如果在上一步修改配置文件设置了服务器管理员密码AdminPassword在游戏内的聊天窗口输入/AdminPassword 你的密码
(有空格)就可以让自己成为服务器管理员。管理员可以通过在游戏聊天框输入以下命令达到权限狗的效果(比如偷偷处死你的朋友)。
Command命令 | Description描述 |
---|---|
/Shutdown {Seconds} {MessageText} | The server is shut down after the number of Seconds Will be notified of your MessageText. 关闭服务器,{Seconds}和{MessageText}为可选项,设置关闭倒计时(秒),通知服务器其他玩家 |
/DoExit | Force stop the server. 强制关闭服务器 |
/Broadcast {MessageText} | Send message to all player in the server. 向服务器中所有玩家发送通知 |
/KickPlayer {SteamID} | Kick player from the server. 将特定的玩家踢出服务器,Steam ID可在游戏菜单复制 |
/BanPlayer {SteamID} | BAN player from the server. 禁止特定的玩家进入服务器,Steam ID可在游戏菜单复制 |
/TeleportToPlayer {SteamID} | Teleport to current location of target player. 传送至特定玩家身边,Steam ID可在游戏菜单复制 |
/TeleportToMe {SteamID} | Target player teleport to your current location 将特定玩家传送至自己身边,Steam ID可在游戏菜单复制 |
/ShowPlayers | Show information on all connected players. 查看当前在线的所有玩家 |
/Info | Show server information. 查看服务器信息 |
/Save | Save the world data. 保存当前游戏进度(建议没事就save一下,免得炸服丢存档) |
常见问题
1.游戏更新后如何更新服务端
首先关掉正在运行的服务端
然后基于上面下载幻兽帕鲁服务端的步骤,用SteamCMD指定之前服务端的安装路径并再次输入下载命令就会自动更新服务端而不是重新下载。
su - steam
./steamcmd.sh
force_install_dir /home/steam/palworld
login anonymous
app_update 2394010 validate
更新完成后显示Success! App '2394010' fully installed.
然后用之前写的脚本启动服务端即可。
F&Q
为什么要手动搭建,现在腾讯云阿里云是可以一键部署幻兽帕鲁服务端
首先不是所有人用的服务商都是腾讯云、阿里云,还是有很多场景需要自己动手搭建的。
然后服务商的一键开服对于想赶紧玩游戏的萌新来说肯定是最好的选择,但对于想长期开服并且自己维护的小伙伴来说肯定手动搭建更好,熟悉服务器环境方便后期的更新维护。