文章内容可能已过时
本文发布于 212 天前,文中的信息可能已经发生变化,请读者注意甄别。
最近很火的资本家模拟器游戏幻兽帕鲁大家都玩了吧,是不是想到你一睡觉帕鲁也跟着睡觉就浑身难受?正好最近我们几个朋友也在一起玩幻兽帕鲁,所以就搭建了一个私人服务器,其中遇到不少问题,这里水一篇文章记录一下其中遇到的问题。
前置需求
硬件
根据幻兽帕鲁官方的推荐,需要准备一个 4C16G 以上的服务器。考虑到它的服务端其实就是没有界面的客户端,这个服务器还是能性能能搞多高就搞多高吧~我们的服务器最多有七八个人同时在线,从最初的 4C16G 一路加到了 20C32G...

所以 在预算充足的情况下可以多搞一点性能。
系统
对于服务器来说,我比较推荐使用 Linux 系统,一是远程时可以使用 ssh 非常方便,二是 Linux 系统没有 GUI 可以把更多的性能放在游戏服务端的资源上。我们的服务器是运行了 Debian 11 的操作系统,如果你习惯用 Ubuntu 的话,也是没有问题的。
安装控制台程序
Linux 操作系统的唯一缺点可能就是操作控制方面不够直观了,我阅读了幻兽帕鲁官方提供的开服教程,发现官方是提供了一个 sh 文件用来运行服务端。这就好多了 —— 我们可以使用一些第三方控制台来管理这个 sh 文件。还记得我之前介绍过 Minecraft 时候介绍的控制台程序 MCSManager 吗?那个就挺不错的,如果你有正在运行的 MC 服务器,可以借用那个控制台程序来管理幻兽帕鲁的服务端进程。安装指令是:
bash
如果你还是不知道该怎么安装的话,我想你可以前往:Minecraft 开服教程(一)|方块人,启动! 这个文章中一探究竟,里面已经写的非常明白啦!
安装 SteamCMD
幻兽帕鲁服务端是使用 SteamCMD 来管理游戏内容和文件的。官方提供了包管理器安装和直接安装两种方式,根据我在 Debian 12 和 11 上的多次安装,我发现直接安装相对来说会直观快捷一些。先在这里放出 SteamCMD 的官方教程页面:SteamCMD - Valve Developer Community 我将上文进行整理,总结出手动安装 SteamCMD 的步骤
新建非 Root 用户
SteamCMD 不允许 Root 用户直接启动,因此我们需要创建一个非 Root 用户。在 Root 用户或者具有 root 权限的用户下执行
other
来创建名为 steam 的用户和为 steam 用户创建密码,随后前往这个用户和进入这个用户的家目录
other
如果你发现切换用户之后没有办法使用 Tab 键补全指令了,那么请在 「$」符号后输入
bash
并回车来开启一个 Bash。
然后切换回 Root 用户,进行下一步
如果你想退出 Steam 这个用户,请按
Ctrl+D
退出到上一个界面。
安装依赖
对于 Debian 用户来说,在 Root 用户先执行
other
来更新软件包,随后切换到 steam 用户
other
安装 SteamCMD
新建一个文件夹来存放 SteamCMD 以及由 SteamCMD 下载的文件
other
然后下载 SteamCMD 的二进制执行文件
other
下载完毕后使用 chmod +x steamcmd.sh
提升权限
首次运行和下载游戏
使用 steam 用户进入 steam 文件夹并运行 steamcmd.sh 文件
other
SteamCMD 会加载一些必要的文件,完成后会显示 Steam>

输入 login anonymous
来匿名登录,如果此步骤出现问题,则可能需要(ProxyChains 等工具)配置网络环境;出现 OK 则为登录成功。

然后输入 app_update 2394010 validate
来下载游戏,其中「2394010」 就是 幻兽帕鲁的服务端 ID,下载大概大小为 4GB 左右,具体速度视网络环境而定。下载完成之后会进行校验。
下载游戏依赖
使用下面的指令安装游戏依赖(SteamCMD)
other
下载完成按下 exit
退出 steamCMD。新建文件夹并将下载的文件放入
other
配置 MCSManager 使其能够控制服务端启停
登录你的 MCSManager 控制台,创建用户(或者登录管理员账户),在左边菜单栏中的「应用实例」中选择新建实例

选择「其他游戏服务端」或者「通用控制台程序」,再新界面中选择「无需文件或选择已存在文件」

其中:
- 实例名:随意填写,方便记忆即可
- 启动命令:
sudo -u steam bash PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS EpicApp=PalServer
- 服务端文件目录:
/home/steam/Steam/steamapps/common/PalServer
如果你不是按照我的方法创建用户和安装 SteamCMD 的,请调整对应的用户名和服务端文件的路径。
随后进入控制台选择「开启实例」即可。

配置自动重启和更新指令
配置定时重启
使用 MCSManager 管理服务端进程的最大好处就是可以配置自动重启。由于这个游戏的服务端没有自动卸载区块和自动回收内存机制,导致它占用的内存会越来越大,这时我们就可以使用 MCSManager 的计划任务功能来配置自动重启。点击「计划任务」,选择「新增计划任务」

将「发送命令」修改为「重启实例」,将「间隔时间性任务」改为「周期时间性任务」。调整时间和星期,然后直接点击保存即可。如果需要在一天内多次重启,请添加多个计划任务。
配置意外重启
MCSManager 支持非计划终止实例后自动重启,也就是说如果不是你手动终止的实例,控制台可以帮助你自动重启。这在服务端崩溃时很有帮助。在控制台的「事件任务」中勾选「自动重启」即可。

配置更新指令
幻兽帕鲁的服务端更新指令本质上就是重新下载新内容,所以按照 SteamCMD 的指南,我们只要在需要更新时重新运行 steamcmd +login anonymous +app_update 239401 validate +quit
即可。
我们前往 MCSManager 控制台,进入实例,选择「高级实例设置」,在更新文件命令处输入上面的指令即可

other
如果你不是按照我的方法创建用户和安装 SteamCMD 的,请调整对应的用户名和服务端文件的路径。
已知问题
如果你之前使用幻兽帕鲁官方教程进行开服和游玩,按照我的方法操作后会出现用户资料丢失的情况,包括但不限于:
- 重新捏脸
- 重新开图和传送点
- 背包清空
- 公会信息丢失
等问题。除了删档重新来过之外,还可以通过迁移 UUID 的方式恢复上述内容,这个迁移方法我另开一文说明。当然,最理想的还是重新开档重新来过,不然遇到小问题也是在所难免的,毕竟这个游戏的服务端做的不那么令人满意...