安装SteamCMD
Steam 控制台客户端或 SteamCMD 是 Steam 客户端的命令行版本。它的主要用途是使用命令行界面安装和更新 Steam 上可用的各种专用服务器。
创建运行服务的专属用户
创建一个名为 steam 的用户帐户以安全运行 SteamCMD,将其与操作系统的其余部分隔离开来。
警告:不要在以 root 用户身份操作时运行steamcmd。这样做会带来安全风险。
- 以 root 用户身份创建 Steam 用户:
sudo useradd -m steam
sudo passwd 用户密码
- 给steam用户赋予创建文件夹权限
#先添加文件写入权限
chmod u+w /etc/sudoers
vim /etc/sudoers
输入"i"进入编辑模式,找到这一 行:“root ALL=(ALL) ALL"在起下面添加"steam ALL=(ALL) ALL”,然后保存(就是先按一 下Esc键,而后输入":wq")退出。
#撤销文件写入权限
chmod u-w /etc/sudoers
安装SteamCMD
- 进入其主文件夹:
sudo -u steam -s
cd /home/steam
- 要安装 SteamCMD,请添加非自由软件库,并且必须启用 x86 软件包。
sudo apt update; sudo apt install software-properties-common; sudo apt-add-repository non-free; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
- 运行steamcmd
steamcmd
如果无法运行SteamCMD可以尝试手动安装
- 在开始之前,您必须先安装运行 SteamCMD 所需的依赖项:
sudo apt-get install lib32gcc-s1
- 以 root 用户身份,升级为 Steam 用户:
su - steam
如果您不是以 root 身份登录,而是用于执行管理,请升级给 Steam 用户,如下所示:sudo
sudo -iu steam
- 为 SteamCMD 创建一个目录并切换到该目录:
mkdir ~/Steam && cd ~/Steam
- 下载并解压 SteamCMD for Linux:
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
- 运行SteamCMD
cd ~/Steam
./steamcmd.sh
安装幻兽帕鲁服务端
- 如果已经进入steamcmd先退出:
quit
- SteamCMD 准备好运行后,在命令提示符下运行以下命令以下载专用服务器。steamcmd 命令的路径必须由绝对路径指示,具体取决于安装方法。
steamcmd +login anonymous +app_update 2394010 validate +quit
- 下载完成后,切换到下载目录。如果您已经为 SteamCMD 设置了安装目录,请参考它。
cd ~/Steam/steamapps/common/PalServer
如果找不到安装目录可以查找PalServer的目录
find / -name PalServer*
然后找路径带有steam文件夹的就是了
- 若要启动服务器,请运行 PalServer.sh 脚本。
./PalServer.sh
注意:如果是通过shell远程连接服务器操作的,请后台运行PalServer.sh脚本
./PalServer.sh &
- 如果在启动时出现以下消息
.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
则可以通过执行以下步骤来更正错误。
mkdir -p ~/.steam/sdk64/
steamcmd +login anonymous +app_update 1007 +quit
cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
注意:如果在服务器运行后执行此过程,则游戏将从角色重新创建开始。
我们建议您不要在已在运行的服务器上执行此操作。
- 错误在启动时显示一次。如果显示 [.steam/sdk64/steamclient.so OK. (First tried local ‘steamclient.so’)],则没有问题。
$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/ubuntu/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
优化游戏平衡
游戏平衡可以像单人游戏一样进行优化。这是通过配置文件进行配置。
- 配置文件位置
这些文件在服务器启动一次后才会生成。
steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
-
默认设置
默认设置位于 steamapps/common/PalServer/DefaultPalWorldSettings 中.ini
建议复制使用。 -
配置参数
我们建议您将默认设置复制到配置文件,然后仅更改必要的设置。
此外,不允许在行的中间使用换行符。
*请注意,保留了用于将来更新的参数。
参数名 | 意译 |
---|---|
Difficulty | 困难 |
DayTimeSpeedRate | 昼间速度 |
NightTimeSpeedRate | 夜间速度 |
ExpRate | 经验值倍率 |
PalCaptureRate | 帕鲁捕捉率 |
PalSpawnNumRate | 帕鲁出场率 |
PalDamageRateAttack | 帕鲁伤害倍率 |
PalDamageRateDefense | 帕鲁防御倍率 |
PlayerDamageRateAttack | 玩家攻击倍率 |
PlayerDamageRateDefense | 玩家防御倍率 |
PlayerStomachDecreaceRate | 玩家饥饿消耗率 |
PlayerStaminaDecreaceRate | 玩家体力降低率 |
PlayerAutoHPRegeneRate | 玩家自动生命值恢复率 |
PlayerAutoHpRegeneRateInSleep | 玩家睡眠HP恢复率 |
PalStomachDecreaceRate | 帕鲁饥饿消耗率 |
PalStaminaDecreaceRate | 帕鲁耐力降低率 |
PalAutoHPRegeneRate | 帕鲁自动 HP 再生率 |
PalAutoHpRegeneRateInSleep | 帕鲁自动 HP 再生率 (在终端中) |
BuildObjectDamageRate | 构建对象损坏率 |
BuildObjectDeteriorationDamageRate | 构建对象劣化损坏率 |
CollectionDropRate | 可获取的收集倍率 |
CollectionObjectHpRate | 可获取的对象 HP倍率 |
CollectionObjectRespawnSpeedRate | 可获取的对象刷新间隔 |
EnemyDropItemRate | 敌方物品掉落率 |
DeathPenalty | None : 无丢失, Item : 丢失物品, ItemAndEquipment : 丢失物品和装备, All : 丢失所有物品和装备包括帕鲁 |
GuildPlayerMaxNum | 公会的最大玩家 |
PalEggDefaultHatchingTime | 孵蛋的时间(单位小时) |
ServerPlayerMaxNum | 可以加入服务器的最大人数 |
ServerName | 服务器名称 |
ServerDescription | 服务器描述 |
AdminPassword | 管理员密码 |
ServerPassword | 设置服务器密码。 |
PublicPort | 公共端口号 |
PublicIP | 公共 IP |
RCONEnabled | 启动RCON |
RCONPort | RCON端口 |
- 默认配置文件,可以将需要的修改,其他保持不动。
[/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",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="China",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")
设置Swap(非必选,防止内存不够服务崩溃,用于减少重启服务的间隔)
切换root用户
su root
- 首先查看系统是否有swap分区
free -h
如果 swap 后面是3个0 代表没有swap分区
- 开始创建swap分区
count * bs = 分区大小,我服务器是16G的,所以设置32G。(主要是针对帕鲁这个游戏配置)
正常大小建议:
内存小于 4GB 时,推荐不少于 2GB 的 swap 空间
内存 4GB~16GB,推荐不少于 4GB 的 swap 空间
内存 16GB~64GB,推荐不少于 8GB 的 swap 空间
内存 64GB~256GB,推荐不少于 16GB 的 swap 空间
dd if=/dev/zero of=/root/swapfile bs=1M count=32768
- 格式化新建的分区文件
mkswap /root/swapfile
- 将新建的分区文件设为swap分区
swapon /root/swapfile
- 设置开机自动挂载swap分区
echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab
- 查看swap分区是否成功配置
free -h
设置定时备份存档和重启服务
切换steam用户
su steam
- 先进入帕鲁文件夹目录
cd ~/Steam/steamapps/common/PalServer
如果找不到安装目录可以查找PalServer的目录
find / -name PalServer*
然后找路径带有steam文件夹的就是了
- 创建存档备份文件夹
sudo mkdir SaveBackup
- 创建脚本
sudo touch restart_pal_server.sh
- 下载screen
sudo apt-get install screen
- 编辑脚本
sudo vim restart_pal_server.sh
将内容复制进去
#!/bin/bash
#切换到游戏服务端目录
cd /PalServer的目录地址/PalServer
#先在PalServer目录下手动创建一个名为SaveBackup文件夹
source_dir="Pal/Saved/SaveGames" #存档路径
backup_dir="SaveBackup" #写入路径
backup_folder="$backup_dir/$(date +'%Y%m%d_%H%M%S')" #文件夹命名
sudo mkdir -p "$backup_folder" #创建备份目录
sudo cp -r "$source_dir"/* "$backup_folder" #复制存档
echo "备份存档文件已保存到 $backup_folder"
# 用screen重新启动游戏服务端
screen -S pal -X quit
screen -S pal -X quit
sleep 60 #延迟60秒再重开服务器防止Swap内存没有释放完。
screen -dmS pal ./PalServer.sh # 启动游戏服务端并放入后台
- 设置脚本和文件夹权限
sudo chmod +x restart_pal_server.sh
sudo chmod -R 777 SaveBackup
- 测试运行脚本
如果已经启动了帕鲁服务,先关闭。
查看端口占用的服务,默认是8211,如果修改了端口已修改后的端口为准
netstat -tunlp | grep 8211
如果查到帕鲁服务就关闭掉
kill 占用8211端口的id
然后运行脚本
bash restart_pal_server.sh
查看screen是否有pal窗口
screen -ls
- 创建定时任务
crontab -e
如果是第一次创建,会弹出让你选择编译器。选择1或者2都行
将内容复制进去,每天凌晨3点执行脚本。(注:如果服务器内存太小熬不到一天就炸服,可以设置多个重启的时间点)
0 3 * * * /脚本所在地址/restart_pal_server.sh
更新服务端
如果游戏更新了,服务端也需要更新。否则会因为版本不一致导致无法连接服务器文章来源:https://www.toymoban.com/news/detail-837229.html
steamcmd +login anonymous +app_update 2394010 validate +quit
本文教程参考官方文档地址
链接: Palworld技术指南.
链接: SteamCMD技术指南.文章来源地址https://www.toymoban.com/news/detail-837229.html
到了这里,关于Linux Deepin搭建幻兽帕鲁服务端教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!