在云服务器上搭建《饥荒》专用服务器:从选购配置到模组管理的完整指南

1. 从单机到云端:为什么要在云服务器上玩《饥荒》?

如果你是一个《饥荒》的老玩家,肯定经历过这样的场景:好不容易拉上三五好友,约好周末一起联机开荒,结果因为其中一位朋友的网络不稳定,或者他的电脑配置不够,导致整个游戏过程卡顿、掉线,甚至存档崩溃,一晚上的努力付诸东流。又或者,你精心搭建了一个长期生存的基地,希望它能够7x24小时不间断地运行,让你和朋友们随时都能上线打理一下,但自己的电脑不可能一直开着。这时候,一个稳定、持久、且能承载多人联机的游戏服务器就成了刚需。

自己用电脑开服是最初级的方案,但它受制于你的个人网络(通常上传带宽有限)、电脑性能以及必须持续开机的限制。而云服务器的出现,完美地解决了这些问题。你可以把它理解为你租用了一台24小时不关机的、拥有公网IP的、网络带宽充足的“虚拟电脑”,专门用来运行《饥荒》的服务端程序。这样一来,所有玩家都连接到这台云服务器上进行游戏,彼此的体验不再受主机玩家的网络和硬件制约,世界存档也能永久保存在云端,实现了真正的“拎包入住,随时开玩”。

近年来,随着云计算服务的普及和成本下降,像阿里云、腾讯云等厂商都提供了非常亲民的“轻量应用服务器”,特别适合我们这类个人开发者或游戏爱好者。它们价格低廉(学生认证后甚至有免费或极低折扣的套餐)、配置简单(通常预装了操作系统和常用环境)、网络优质(BGP多线,国内访问速度快),搭建一个《饥荒》服务器绰绰有余。因此,将《饥荒》服务器部署到云上,已经从一种极客玩法,变成了追求稳定、便捷联机体验的优选方案。

2. 战前准备:云服务器选购与基础环境配置

在开始搭建之前,我们需要准备好“战场”——也就是一台合适的云服务器。这里的选择至关重要,直接影响到后续游戏的流畅度和稳定性。

2.1 服务器规格选择:要性能,也要性价比

《饥荒》的服务端(Dedicated Server)本身对CPU和内存的要求并不算极端苛刻,但对于多人游戏和大型模组(Mod)来说,足够的资源是流畅体验的保障。

  • CPU与内存:对于一个小型好友服(2-6人),1核2G的配置是起步线。如果人数更多(6-10人),或者你计划加载大量改变游戏机制的模组(比如“神话书说”、“能力勋章”等大型Mod),那么我强烈建议选择2核4G或更高的配置。内存不足会导致服务器频繁卡顿、崩溃,尤其是在世界生成或大量实体刷新时。
  • 硬盘:系统盘选择40GB或以上即可。游戏服务端、存档、模组加在一起,初期占用不会太大,但考虑到存档会随着游戏时间增长而膨胀,预留空间是必要的。云硬盘的IO性能通常都足够。
  • 网络与带宽:这是影响国内玩家体验的关键。务必选择国内节点的服务器(如华北、华东、华南)。带宽方面,轻量服务器通常提供3Mbps、5Mbps或更高的峰值带宽。对于《饥荒》这种游戏,5Mbps带宽足够支持5-8人同时流畅游戏。重点要关注的是“流量包”是否够用,虽然《饥荒》流量消耗不大,但以防万一,选择“流量包不限量”的套餐更省心。
  • 操作系统强烈推荐选择64位的Linux系统,如Ubuntu 20.04/22.04 LTS或CentOS 7/8。Linux系统更稳定、资源占用更低,且通过命令行操作非常高效。虽然Windows Server也可以,但会占用更多内存且授权费用更高,对于纯服务端用途来说不是最佳选择。

提示:对于学生朋友,一定要利用好“学生认证”福利。阿里云“高校计划”、腾讯云“云+校园”经常提供每月仅需10元甚至免费的轻量服务器套餐,是绝佳的练手和实战平台。

以阿里云轻量应用服务器为例,在购买时,选择好地域、应用镜像(选Ubuntu 20.04)、2核4G6M的套餐,就是一个非常均衡且能应对大多数场景的配置。

2.2 基础环境配置:连接服务器与安装依赖

购买并启动服务器后,你会获得一个公网IP地址、一个用户名(如root)和密码或密钥。我们需要通过SSH工具连接到服务器进行后续操作。Windows用户可以使用PuTTYXshell,macOS和Linux用户直接在终端使用ssh命令即可。

连接命令大致如下:

ssh root@你的服务器公网IP

输入密码后,你就进入了服务器的命令行界面。第一件事是更新系统软件包列表并升级现有软件,这是一个好习惯:

apt update && apt upgrade -y # Ubuntu/Debian 系统 # 如果是 CentOS,则使用:yum update -y

接下来,安装《饥荒》专用服务器所必须的依赖库。它需要一些32位的兼容库才能运行:

# 对于 Ubuntu/Debian 系统 apt install -y lib32gcc-s1 libcurl4-gnutls-dev:i386 screen # 对于 CentOS 7/8 系统,需要先启用 EPEL 仓库,然后安装 yum install -y epel-release yum install -y glibc.i686 libstdc++.i686 libcurl.i686 screen

这里安装的screen是一个终端复用工具,它至关重要。因为它可以让我们在断开SSH连接后,让服务器程序继续在后台运行。否则,你一退出终端,游戏服务器就停止了。

3. 核心部署:SteamCMD与《饥荒》专用服务端的安装

《饥荒》的专用服务器程序是通过Steam平台分发的,因此我们需要在Linux服务器上安装Steam的命令行客户端——SteamCMD,来下载和更新服务器文件。

3.1 安装与配置SteamCMD

首先,创建一个专门的用户来运行SteamCMD和游戏服务器,这是一个安全性的最佳实践,避免使用root用户直接运行游戏服务。

adduser dstserver

按照提示设置密码,其他信息可以按回车跳过。然后,切换到新创建的用户:

su - dstserver

现在,我们以dstserver用户身份来操作。创建SteamCMD的安装目录并进入:

mkdir ~/steamcmd && cd ~/steamcmd

下载SteamCMD的Linux版本压缩包:

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

解压文件:

tar -xvzf steamcmd_linux.tar.gz

首次运行SteamCMD,它会完成自我安装和更新。运行:

./steamcmd.sh

等待片刻,你会看到Steam>的命令行提示符。这时,我们先匿名登录,然后退出以完成初始化:

login anonymous quit

至此,SteamCMD就安装好了。

3.2 下载《饥荒》专用服务器文件

《饥荒》的专用服务器在Steam上是一个独立的工具,其App ID是343050。我们继续使用SteamCMD来下载它。

~/steamcmd目录下,我们可以直接通过一行命令完成下载:

./steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit

这条命令分解来看:

  • +login anonymous:以匿名方式登录Steam(下载专用服务器不需要购买游戏)。
  • +force_install_dir ~/dst:指定服务器文件安装到/home/dstserver/dst目录。
  • +app_update 343050:下载或更新App ID为343050的应用,即《饥荒》专用服务器。
  • validate:验证文件的完整性,确保下载无误。
  • +quit:完成后退出SteamCMD。

这个过程会下载大约1GB的文件,耗时取决于你的服务器网络速度。下载完成后,~/dst目录下就是完整的服务器文件了。

3.3 生成初始服务器配置与令牌

在启动服务器前,需要两个关键的配置文件:世界生成配置和服务器身份令牌。

首先,进入服务器文件的bin目录,运行一次服务端程序,它会生成基础的配置文件模板:

cd ~/dst/bin ./dontstarve_dedicated_server_nullrenderer

运行后程序会很快崩溃并报错,这是正常的,因为它缺少必要的配置。我们按Ctrl+C终止它。此时,在~/.klei/DoNotStarveTogether/目录下,会生成一个Cluster_1的文件夹,里面就有我们需要的配置结构。

接下来,获取服务器令牌(Server Token)。这个令牌是你的服务器在Klei官方服务器列表中的“身份证”,没有它,服务器无法在线上列表显示,也无法使用一些在线功能。

  1. 在你的个人电脑上,启动《饥荒》联机版游戏。
  2. 点击“账户”按钮。
  3. 在“游戏”一栏中,你会看到“生成服务器令牌”的选项。点击它,令牌就会复制到你的剪贴板。
  4. 登录你的云服务器,切换到dstserver用户,创建令牌文件:
    su - dstserver mkdir -p ~/.klei/DoNotStarveTogether/Cluster_1 echo “你复制的令牌内容” > ~/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt
    请务必将“你复制的令牌内容”替换成你实际复制的长长一串字符。

4. 深度定制:服务器配置、模组管理与启动脚本

有了基础文件,现在我们来打造一个符合自己心意的游戏世界。

4.1 配置世界与服务器设置

Cluster_1目录下,有两个重要的配置文件:

  • cluster.ini集群配置文件。定义了这个服务器集群(Cluster)的整体属性,比如服务器名称、描述、密码、游戏模式、最大玩家数等。
  • Master/Caves/目录下的leveldataoverride.lua世界生成配置文件。分别对应地面(Master)和洞穴(Caves)世界的地图参数。如果你不开启洞穴,则只需要配置Master

一个典型的cluster.ini配置如下:

[GAMEPLAY] game_mode = survival max_players = 6 pvp = false pause_when_empty = true [NETWORK] cluster_description = 我们的专属云服 cluster_name = 饥荒欢乐营 cluster_password = 123456 # 设置一个连接密码,不设密码则留空 cluster_intention = cooperative [MISC] console_enabled = true [SHARD] shard_enabled = true bind_ip = 0.0.0.0 master_ip = 127.0.0.1 master_port = 10889 cluster_key = supersecretkey

leveldataoverride.lua文件则可以通过游戏客户端生成更直观:在客户端创建世界时,调整好所有你喜欢的设置(季节长度、资源丰富度、生物数量、是否开启洞穴等),然后进入世界。在游戏中按~键打开控制台,输入命令:

TheNet:GenerateClusterToken()

这会在你的客户端存档位置生成一个包含当前世界所有配置的leveldataoverride.lua文件。将其上传到服务器对应的Master目录下即可。这是最准确且方便的世界定制方式。

4.2 模组(Mod)的安装与管理

模组是《饥荒》的灵魂。在服务器端管理模组,需要在Master目录下创建或修改modoverrides.lua文件。但手动编写这个文件很麻烦。我推荐一个高效的工作流:

  1. 在本地客户端配置Mod:在你的电脑上启动《饥荒》联机版,创建一个新世界。在创建世界的“模组”页面,浏览并订阅你想要的模组,并配置好每个模组的选项(这一步非常重要,因为服务器会沿用这些配置)。
  2. 获取Mod配置代码:配置好并应用后,不要进入世界。回到主菜单,打开“模组”界面。此时,左下角有一个“复制服务器Mod设置”的按钮。点击它,你的剪贴板里就会得到一串长长的、包含了所有已订阅Mod及其配置的代码。
  3. 部署到服务器:登录服务器,编辑Master/modoverrides.lua文件,将刚才复制的代码全部粘贴进去。如果文件不存在,就创建它。
  4. 下载Mod文件:服务器本身不包含Mod文件,需要下载。在dstserver用户下,进入服务器目录的mods文件夹,编辑dedicated_server_mods_setup.lua文件。你需要为每一个订阅的Mod添加一行下载指令,格式为:
    ServerModSetup("模组的创意工坊ID")
    模组的ID可以在创意工坊该Mod的页面URL中找到。例如,全球定位Mod的ID是378160973,那么行就是ServerModSetup("378160973")
  5. 启动时生效:下次启动服务器时,它会自动下载dedicated_server_mods_setup.lua中列出的所有Mod,并应用modoverrides.lua中的配置。

4.3 创建自动化启动脚本

手动输入一长串命令启动服务器太麻烦了,而且我们需要用screen来将其放入后台会话。为此,我们编写一个启动脚本。

dstserver用户的家目录下,创建文件start_dst.sh

#!/bin/bash cd /home/dstserver/dst/bin screen -S dst_master -d -m ./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master # 如果需要开启洞穴,取消下面一行的注释 # screen -S dst_caves -d -m ./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves

给脚本添加执行权限:

chmod +x ~/start_dst.sh

这个脚本做了两件事:一是切换到服务器程序目录;二是使用screen命令创建一个名为dst_master的分离式会话(-d -m),并在其中启动地面世界服务器。-console参数开启控制台,-cluster指定集群配置目录,-shard指定启动的是地面还是洞穴。

以后启动服务器,只需要以dstserver用户身份运行./start_dst.sh即可。服务器会在后台运行。

要管理这个后台服务器(比如输入控制台命令),可以使用:

screen -r dst_master # 重新连接到地面服务器会话

在连接后的控制台里,你可以输入游戏控制台命令(如c_godmode()给所有人上帝模式)。要断开连接并让服务器继续后台运行,按Ctrl+A,然后按D

5. 安全、维护与高阶调优

服务器跑起来只是第一步,让它长期稳定、安全地运行,还需要做一些维护工作。

5.1 防火墙配置与安全加固

云服务器暴露在公网,安全是头等大事。默认情况下,你需要确保服务器的防火墙(如ufw)放行了《饥荒》所需的端口。

《饥荒》服务器默认使用以下端口:

  • 10999 UDP:主通信端口,必须开放。
  • 10889 UDP:主分片(Shard)间通信端口(如果开洞穴)。
  • 12345-12349 UDP:辅助端口,建议一并开放。

在Ubuntu上,使用ufw可以这样操作:

# 切换到root用户 sudo ufw allow 10999/udp sudo ufw allow 10889/udp sudo ufw allow 12345:12349/udp sudo ufw reload

此外,务必禁用root用户的SSH密码登录,改用密钥对认证。这是防止服务器被暴力破解的最有效手段。在云服务器控制台的“密钥对”管理中创建并绑定密钥,然后在SSH配置文件中设置PasswordAuthentication no

5.2 日常维护与问题排查

  • 查看服务器日志:日志是排查问题的第一手资料。服务器日志默认输出到~/.klei/DoNotStarveTogether/Cluster_1/Master/server_log.txt。当服务器启动失败或玩家无法连接时,首先查看这里面的错误信息。
  • 更新服务器:《饥荒》游戏更新后,服务器也需要更新。只需重新运行一次SteamCMD的更新命令即可:
    cd ~/steamcmd ./steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit
    更新前,最好先关闭正在运行的服务器。
  • 备份存档:定期备份整个~/.klei/DoNotStarveTogether/目录。你可以写一个简单的脚本,用cron定时任务将其打包压缩并上传到另一个存储空间(如云存储)。存档丢失是最大的悲剧。
  • 管理玩家与黑名单:在服务器控制台(通过screen -r连接后),可以使用命令管理玩家。例如,TheNet:Ban(玩家ID)可以封禁捣乱者。玩家ID可以在游戏内通过检查玩家获得,或者在服务器日志中查找。

5.3 性能监控与资源优化

对于长期运行的服务器,监控其资源使用情况是必要的。可以使用简单的命令如htop来实时查看CPU和内存占用。

如果发现服务器在游戏后期或玩家多时变卡,可以考虑以下优化:

  1. 清理地面杂物:过多的掉落物(树枝、石头、花瓣)会严重影响性能。可以定期在控制台使用命令c_clean()清理所有可拾取物品,或者安装自动清理类的Mod。
  2. 控制生物数量:过多的生物(尤其是坎普斯、兔人)会导致卡顿。适当调整世界生成时的生物数量,或使用命令控制。
  3. 审视大型Mod:一些功能极其复杂的大型Mod可能是性能杀手。如果感到卡顿,尝试暂时禁用一些非必需的Mod来定位问题。
  4. 升级服务器配置:如果以上方法都无法解决,且玩家数量确实较多,那么升级云服务器的CPU和内存配置是最直接的解决方案。

搭建一个属于自己的《饥荒》云服务器,从最初的选购、配置,到后期的调优、维护,整个过程就像在游戏里从零开始建立一个基地一样,充满挑战也充满乐趣。当看到朋友们稳定地连接进来,一起在属于你们自己的永恒世界里冒险时,那种成就感和便利性是本地主机无法比拟的。最关键的是,通过这次实践,你收获的远不止一个游戏服务器,更是对Linux操作、网络服务部署和运维的一次宝贵实战经验。