如何淘一台洋垃圾并在 Windows 上部署潜渊症服务器

潜渊症(Barotrauma)是今年玩过最让人惊喜的一款游戏。

并不算华丽精美的游戏画面下却有着异乎寻常的游戏深度, 共同登船上岸后亲友无不赞许玩法之丰富, 制作用心之良苦, 然后顺势自然地AFK。玩法说来简单:只要从一个站点出发航行到下一个站点(具体是否是任务所需的目标站点并不重要), 安全地停靠在站点或是到达中继点即可算是完成一个关卡, 无论是任务、遗物还是怪物都在可以无视的范围内, 所谓“只要不想赢我就不会输”正是如此。然而在实际游戏中扮演一名草菅人命的舰载庸医, 与社畜安全官和机修工艇长开拓伟大航路的旅程并不可能顺遂, 除了面对危机四伏的木卫二水下世界, 与海洋原住民密切而亲切地打成一片外,还必须随时可能面对人性的扭曲和道德的沦丧。

虽然2019年就发布了专用服务器, 但到现在多人联机仍旧 Bug 遍地体验屌差

你需要面对“在站点中盗窃灭火器不成反被揍晕, 船医被铐亟待救援舰长竟举枪相向”的绝望; 需要体悟“为搜沉舟, 船员未携一物尽数赤身潜往深海; 载兴而归, 潜艇竟被洋流刮飞全员缺氧无一生还”的安详; 除去“立志消灭木卫二上一切罪恶的bot安全官化身兰博抡起铁拳单挑全艇大获全胜, 主动出击的船员(含舰长)被丝血打晕拷成一串, 几位越狱囚犯被黄金精神点悟而流下感动热泪, 遂发宏愿夺枪屠遍全船, bot亦未能幸免”的天灾; 甚至还有“安全官为六根清净平除贪欲, 登船便拔除独苗经济作物, 致使艇上深海拾荒之风泛滥, 礼崩乐坏”的人祸。此间乐, 不适数。这样走心血管的上头佳作, 不建立个专用服务器怎么能好好支持接下来的数百小时游戏时长呢?

本文主要基于官方Wiki的专用服务器部署指南奈亚提拉托普official的《如何在Linux上部署潜渊症服务器》一文撰写。

贫穷的我们意欲淘出一台洋垃圾并在其上搭建潜渊症专用服务器的话, 至少需要解决两个问题:

  • 专用服务器应在局域网中正常工作
  • 专用服务器应被异地的小伙伴稳定访问

首先我们来解决第一个问题:

白嫖一台洋垃圾Windows主机, 让一部分人在局域网先乐起来

首先, 白嫖一名有闲置洋垃圾的老伙计。在他的 HPE ProLiant MicroServer Gen8上建立一个专供潜渊症专用服务器运行的账号, 顺便也找个空闲磁盘建个文件夹当作工作目录。第二步是按照 SteamCMD 的官方文档安装最新的 SteamCMD, 可以选择在官方下载地址下载 SteamCMD 并解压到工作目录中, 如果你和 akamaihd.net 八字不合也可以使用这份缓存文档(2026-05-14存档)。

解压后在目录中建立一个 initialize_server.ps1 文件, 在其中输入以下内容:

steamcmd +login anonymous +app_update 1026340 validate +quitCode language: PowerShell (powershell)

该 PowerShell 脚本使用匿名方式登录 Steam 并下载最新的专用服务器文件, 截至本文成文时间, 服务器版本号为1.12.7.0。双击运行脚本后, 就会按命令中指定的 AppID (即 1026340)下载潜渊症专用服务器到 SteamCMD 的目录中。之后当它走完进度条完成下载更新和验证后, 若你的 SteamCMD 目录位于 D:\SteamCMD\ , 那么专用服务器的文件就会在:

D:\SteamCMD\steamapps\common\Barotrauma Dedicated Server\Code language: PowerShell (powershell)

它看上去像这样:

..\Barotrauma Dedicated Server\ 目录中的内容

此时可在目录中找到 DedicatedServer.exe。不想深究服务器配置的话, 双击运行至下图所示内容就算完工, 此时已然可以停手于此并呼朋唤友, 即刻劲爽。

服务成功启用

设置配置文件, 让先乐起来的一部分人体验更好

下文将假定你的 SteamCMD 位于 D:\SteamCMD\, 专用服务器位于 D:\SteamCMD\steamapps\common\Barotrauma Dedicated Server\ 且 Steam 账户名和 Windows 账户名均为 AWSL

专用服务器主要依赖三份配置文件:

  • serversettings.xml, 服务器的基本配置文件
  • config_player.xml, MOD配置文件
  • clientpermissions.xml, 游戏服务器权限配置文件

和两个目录:

  • Mod 文件目录, 其中保存着服务器订阅的各种 Mod 文件, 但具体启用与否依赖 config_player.xml 的配置: D:\SteamCMD\steamapps\common\Barotrauma Dedicated Server\Mods\
  • 游戏存档目录, 其中保存着多个游戏当前的存档文件和具体使用的潜艇文件: C:\Users\[Windows账户用户名]\AppData\Local\Daedalic Entertainment GmbH\Barotrauma\

需要配置的 serversettings.xml 在专服目录的根目录下:

D:\SteamCMD\steamapps\common\Barotrauma Dedicated Server\Mods\serversettings.xmlCode language: CSS (css)

serversettings.xml 大部分内容均无需更改, 设置以下几行即可:

<?xml version="1.0" encoding="utf-8"?>
<serversettings
  name="木卫二渊洋牛马海鲜放题" // 服务器列表显示的服务器名称
  public="false"    // 服务器是否公开可搜索, 为否则只能直接加入
  password="123"    // 服务器密码, 为空则无需密码
  port="27015"      // 服务器通信端口, UDP
  queryport="27016" // 服务器查询端口, UDP
  playstyle="Serious"
  maxplayers="10"   // 服务器允许的最大玩家人数
  enableupnp="true"
  autorestart="true"
  LevelDifficulty="50"
  AllowedRandomMissionTypes="Random,Salvage,Monster,Cargo,Combat"  
  AllowedClientNameChars="32-33,38-46,48-57,65-90,91-91,93-93,95-122,192-255,384-591,1024-1279,19968-21327,21329-40959,13312-19903,131072-173791,173824-178207,178208-183983,63744-64255,194560-195103"
  ServerMessage="全场不限量,任意吃,长尾鲨现场熬制,菜品任意挑。日式黑蒜画皮烧、泰式冬阴功爬行者、重庆麻辣摩洛克、更有不限量丘脑刺身和老广人最爱的花胶锤头煞。入场请携带盖格计数器并出示健康码。"             // 服务器的描述文本
  tickrate="10"
  randomizeseed="True"
  userespawnshuttle="False"
  respawninterval="100"
  maxtransporttime="180"
  minrespawnratio="0.2"
  autorestartinterval="60"
  startwhenclientsready="False"     // 玩家是否准备好就开始巡回
  startwhenclientsreadyratio="0.8"  // 开始巡回的已准备玩家比例
  allowspectating="True"
  saveserverlogs="True"
  linesperlogfile="800000"
  allowragdollbutton="True"
  allowfiletransfers="True"
  voicechatenabled="True"
  allowvotekick="True"
  allowendvoting="True"
  allowrespawn="True"
  botcount="0"
  maxbotcount="16"
  botspawnmode="Fill"
  allowdisguises="True"
  allowrewiring="True"
  allowfriendlyfire="True"
  traitorsenabled="Maybe"
  subselectionmode="Manual"
  modeselectionmode="Manual"
  endvoterequiredratio="0.6"
  kickvoterequiredratio="0.6"
  killdisconnectedtime="3000"
  kickafktime="600"
  traitoruseratio="True"
  traitorratio="0.2"
  karmaenabled="True"
  karmapreset="default"
  gamemodeidentifier="Campaign"
  missiontype="all"
  autobantime="3600"
  maxautobantime="86400"/>
Code language: HTML, XML (xml)

重启服务器后再用客户端搜索即可加入游戏。

奈亚提拉托普 officiall 给出的 serversettings.xml 注释
<?xml version="1.0" encoding="utf-8"?>
<serversettings
  //服务器名字
  name="Nyatelathop  QQ群920493518  难度20%" 
  //公有私有服务器 true-false  
  public="true"
  //服务器进入密码  
  password="" 
  //服务器登录端口
  port="27015" 
  //服务器查询端口
  queryport="27016" 
  //服务器游戏风格 Serious=严肃 Casual=休闲 Roleplay=角色扮演 Rampage=暴乱 SomethingDifferent=mod服
  playstyle="Serious" 
  //服务器最大玩家人数
  maxplayers="16" 
  //开启upnp转发
  enableupnp="false" 
  //自动重新开始
  autorestart="true" 
  //游戏难度百分比
  LevelDifficulty="100" 
  //允许的随机任务类型
  AllowedRandomMissionTypes="Random,Salvage,Monster,Cargo,Combat"   
  //设置玩家姓名中允许的字符编码
  AllowedClientNameChars="32-33,38-46,48-57,65-90,91-91,93-93,95-122,192-255,384-591,1024-1279,19968-40959,13312-19903,131072-15043983,15043985-173791,173824-178207,178208-183983,63744-64255,194560-195103" 
  //进入服务器消息提示
  ServerMessage="欢迎来到奈亚服务器,想搭建Linux专用服务器请进Q群920493518" 
  //设置服务器的时钟频率
  tickrate="20" 
  //随机化种子
  randomizeseed="True" 
  //用户重生穿梭机
  userespawnshuttle="True" 
  //复活时间
  respawninterval="300" 
  //设置重生的停靠潜水艇存在时长
  maxtransporttime="180" 
  //最小复活比例
  minrespawnratio="0.2" 
  //自动重新启动间隔
  autorestartinterval="60" 
  //玩家准备好就开始
  startwhenclientsready="False" 
  //玩家准备就绪比例开始
  startwhenclientsreadyratio="0.8" 
  //允许大厅观战
  allowspectating="True" 
  //保存服务器日志
  saveserverlogs="True" 
  //允许碎布玩偶按钮(这个参数的含义我至今一头雾水)
  allowragdollbutton="True" 
  //允许文件传输
  allowfiletransfers="True" 
  //启用语音聊天
  voicechatenabled="True" 
  //允许踢人投票
  allowvotekick="True" 
  //允许巡回结束投票
  allowendvoting="True" 
  //允许重生
  allowrespawn="True" 
  //机器人数量
  botcount="0" 
  //最大机器人数量
  maxbotcount="16" 
  //机器人生成模式 Normal = 正常 Fill = 补充玩家空缺
  botspawnmode="Normal" 
  //允许玩家通过其他身份来伪装自己
  allowdisguises="True" 
  //允许玩家重新布线
  allowrewiring="True" 
  //允许友伤
  allowfriendlyfire="True" 
  //是否开启叛徒 yes =  no = 没有 maybe = 可能有
  traitorsenabled="No" 
  //潜艇选择 Manual = 手动选择 Random = 随机选择 Vote = 投票选择
  subselectionmode="Random" 
  //游戏模式选择 Manual = 手动 Random = 随机 Vote = 投票
  modeselectionmode="Random" 
  //巡回结束投票人数最低比例
  endvoterequiredratio="0.6" 
  //玩家踢出投票人数最低比例
  kickvoterequiredratio="0.6" 
  //终止断开连接的时间
  killdisconnectedtime="120" 
  //挂机人踢出等待时间
  kickafktime="600" 
  //启用叛徒玩家
  traitoruseratio="True" 
  //叛徒比例
  traitorratio="0.2" 
  //启用报应 - 在有叛徒模式下才能体现此系统的作用
  karmaenabled="True" 
  //报应设置 default = 默认 strict = 严格 custom = 自定义
  karmapreset="default" 
  //游戏模式标识符 Sandbox = 沙盒 Mission = 任务 Campaign = 战役
  gamemodeidentifier="sandbox" 
  //任务类型设置 Salvage = 打捞 Monster = 怪物 Cargo = 货物 Combat = 战斗 Random = 随机 all = 全部
  missiontype="all" 
  //玩家自动禁止时间
  autobantime="3600" 
  //最大自动禁止时间
  maxautobantime="86400" 
/>Code language: HTML, XML (xml)

config_player.xml 文件也在专服目录中, 内容如下:

<config
  gameversion="0.15.13.0"
  language="Simplified Chinese"
  masterserverurl="http://www.undertowgames.com/baromaster"
  ...
>
  ...
  <graphicssettings
    particlelimit="1500"
    lightmapscale="1"
    chromaticaberration="true"
    losmode="Transparent"
    hudscale="1"
    inventoryscale="1"
    textscale="1" />
  <contentpackages>
    <core
      name="Vanilla 0.9" />
    <regular>
      <package
        name="Waifu addon pack"
        enabled="true" />
      <package
        name="“信念”级 轻型潜艇 [Faith-class]"
        enabled="true" />
      <package
        name="Super Mining Sonar" 
        enabled="true" />
      <package
        name="EuropaWaifu" />
    </regular>
  </contentpackages>
  <keymapping
    Select="PrimaryMouse"
  ...
   />
  ...
</config>Code language: HTML, XML (xml)

除去诸如语言语言画面音效键位教程等无用设置, 与 Mod 相关的仅有如下代码块:

<contentpackages>
    <core
      // 服务器自带, 不建议修改 
      name="Vanilla 0.9" />
    <regular>
      <package
        // 订阅Mod - Waifu addon pack并在游戏中启用
        name="Waifu addon pack"
        enabled="true" />
      <package
        // 订阅Mod - “信念”级 轻型潜艇 [Faith-class] 并在游戏中启用
        name="“信念”级 轻型潜艇 [Faith-class]"
        enabled="true" />
      <package
        // 订阅Mod - Super Mining Sonar并在游戏中启用
        name="Super Mining Sonar" 
        enabled="true" />
      <package
        // 订阅Mod - EuropaWaifu但不启用
        name="EuropaWaifu" />
    </regular>
  </contentpackages>
Code language: HTML, XML (xml)

将需要启用的 Mod 名字包裹上 <package> 标签放入<contentpackages></contentpackages>块内即可工作。但具体启用需要在标签中将enable属性置为 enabled=”true”, 否则不会在服务器中生效。

如果一切顺利, 服务器启动后会自行连接 Steam 创意工坊并下载 Mod 并按配置启用; 如果你与创意工坊八字不合根本连不上, 你可能需要在 Steam 客户端或网页上订阅 Mod 后从本机将 Mod 文件复制到服务器的 Mod 文件夹中, 位置为 D:\SteamCMD\steamapps\common\Barotrauma Dedicated Server\Mods\

无论是建立 SSH 或 SFTP 传输压缩文件再解压到文件夹中, 还是如钢铁猛男般用 RDP 直接 Crtrl+V 复制到目标目录下都可以。只要保持文件完整, 目录组织正确都能正常使用, 如下图所示:

启用的 Mod 包会在玩家加入服务器后自动下载, Mod 包便可在正在运行的服务器实例上启用, 玩家并不需要遵循服务器的 Mod 列表去创意工坊挨个订阅, 亦不必每次调整 Mod 都新建存档从头玩起。官方的 Mod 部署指南可以在潜渊症 Wiki 中找到。

最后是服务器管理权限配置文件 clientpermissions.xml, 它设置了服主的 Steam 凭据和权限。与另外两个配置文件不同, 它呆在 D:\SteamCMD\steamapps\common\Barotrauma Dedicated Server\Data\ 目录下, 需要更改的三行配置为:

<?xml version="1.0" encoding="utf-8"?>
<ClientPermissions>
  <Client
    name="AWSL"
    steamid="76561[ID打码]602597"
    permissions="All">
    <command
      name="ambientlight" />
    <command
      name="autoitemplacerdebug" />
    ...
  </Client>
</ClientPermissions>
Code language: HTML, XML (xml)

name 属性设置了服主的 Steam 账户名, steamid 属性则是该 Steam 账户的 SteamID, 可在 Steam 好友页面查询得到。当该用户连接服务器后就能获得服务器的全部控制权限, 文件后跟随的 <command> 标签标识了该用户可用的命令, 如果需要设置第二名服务器管理员应在游戏中的船员列表右键为某个玩家提权。permissions 属性可设置13种服主权限, 具体属性值见下表, 译自潜渊症的 fandom WiKi:

权限 权限描述
ManageRound可以开始/结束巡回
Kick可以踢出其他玩家
Ban可以禁止其他玩家
Unban可以取消禁止其他玩家
SelectSub可以选择潜艇
SelectMode可以选择游戏模式
ManageCampaign可以在战役中的商店中选择目的地, 任务和购买物资
ConsoleCommands可以使用控制台命令-请注意, 还需要授予单个控制台命令的权限
ServerLog可以读取服务器日志
ManageSettings可以更改服务器设置
ManagePermissions可以更改其他玩家的权限
KarmaImmunity使自己不受报应系统的负面影响, 不掉道德值
All授予全部权限
permissions 属性值一览表

更多的杂项诸如站点设置, 尸体设置, 技能天赋设置, 船长命令, 任务内容等等配置, 可以在专服 Content 目录下的其他 XML 配置文件中找到, 实在有无法解决的困难也不妨去潜渊症官方 GitHub 页面的 issue 里抱抱大腿。

游戏服务器的安装与设置到此结束, 撒花~

启用外网访问让剩下的人也乐起来

现在可以来解决第二个问题: 异地小伙伴如何稳定访问游戏专服? 老伙计家里并没有 IPv4 的公网地址, 亦没有 IPv6, 为了让诸君都能一起碧蓝之海, 我们需要提供外网访问这台服务器的方式。简单的方法是大把掏钱让电信/联通/移动拉条专线并分配一个稳定好用的公网 IP, 然后按照官方 WiKi 的步骤设置防火墙和路由器的端口映射即可。如若不愿意大把掏钱, 也不想与装维师傅斗智斗勇搞路由器拨号桥接, 那么稍微花上几杯奶茶钱搭建内网穿透是比较好的方案。

首先我们仍然需要公网 IP, 可以去云服务商购买一些学生优惠套餐, 诸如69元一年的1核心2GB 内存30G 硬盘3M 带宽的 VPS 或者 49元一年的1核心1GB 内存20G 硬盘5M 带宽的丐中丐 VPS, 内网穿透只需要最低限度的网络数据包处理能力和 VPS 提供的公网IP地址, 运算性能低一些并不碍事——反正游戏服务器又不会运行在这上面, 就当租个路由器吧。购买 VPS 的流程大同小异, 《如何在Linux上部署潜渊症服务器》一文中亦有涉及, 本文不再赘述。

部署 NPS 服务端

拿到 VPS 后给防火墙添加几个规则保证端口和协议通畅, 别忘了在云服务商给 VPS 提供地安全组规则也给加上需要开放地协议和端口号。

在 NPS 的 GitHub Release 页面下载服务端压缩包, 这是一款轻量的开源内网穿透服务器, 对Linux 和 Windows 均提供了支持。GitHub 上的项目 Readme 文档在此处, 官方中文文档在这里

登录VPS后把nps服务端文件解压到一个工作目中,

  • 对于Linux | Darwin服务器, 在安装目录下执行: sudo ./nps install
  • 对于Windows服务器, Win+X管理员身份运行PowerShell, 在安装目录下执行: nps.exe install

就算完成了 nps 服务端安装, 安装后 Windows 服务端的配置文件位于 C:\Program Files\nps, 而 Linux 和 Darwin 服务器的配置文件位于 /etc/nps 。输入命令即可直接启动服务:

  • 对于Linux | Darwin服务器, 执行: sudo nps start
  • 对于Windows服务器, Win+X管理员身份运行PowerShell, 执行: nps.exe start

如果一切正常, 可以通过[公网 IP:Web 界面端口](默认配置为8080)访问到Web管理界面了。账号默认为 admin, 密码默认为 123。进入 Web 管理界面就能看到服务器状态信息和统计信息了。

nps 的配置太依赖这个 Web 管理页面了, 导致其内建的 WebAPI 打磨不足并不好用。我的腾讯云忘记去备案导致临时封了 HTTP/HTTPS 后我根本访问不到配置页面, nps 配置好之后就是个透明服务, 平时不太用都快忘记了这个配置页面的存在——但急用的时候访问不到可就让人抓狂了。
这是 nps 的信息面板, 花花绿绿的.jpg

部署 NPC 客户端

在nps的概念里, 需要被访问的内网服务器被称为客户端, 像frp一样, 客户端和服务端需要建立TCP连接才能保持通信和转发。所以需要被访问的服务器安装npc(c是client)而提供对外访问端点的VPS则安装nps(s指server)。但和frp不一样的地方是, frp只需要稍稍在服务端做一些基本的认证配置, 保证带有复杂配置的客户端能够连上来就能正常工作了, 转发行为的控制主要还是客户端来承担; nps则把主要的配置交给了服务端, 只要让客户端顺利在列表里出现[在线]字样, 要杀要剐就是服务端说了算, 具体是开TCP/UDP隧道, 抑或是SOCKS代理还是进行域名解析, 逻辑上来看不过是给客户端增加了一些路由规则, 告诉VPS的入站请求应该如何转发/改写这些请求到哪一台具体处理这些请求的客户端上去。

因此得在Web管理界面上把白嫖到的游戏服务器添加到列表里: 在客户端里面点击[新增]按钮, 在此新建一个客户端。主要作用就是为了在软件里标识这台游戏服务器, 所以重要的配置项反倒是备注……..要写得清晰易懂些过段时间来看才知道这是个啥机器。

然后展开新建的客户端条目, 下面会生成好客户端连接服务端所需要执行的命令, 复制它, 然后回到我们的Windows游戏服务器上:

仍然是去nps的GitHub Release页面, 下载带client字样的npc客户端。解压出来就可以用无配置文件模式启动npc客户端了, 虽然官方文档是这么写的, 然而……并不能。(npc基本使用说明的官方文档存档于此)

因此你需要在npc的工作目录下的 conf 目录里, 编辑一下它的默认配置文件 npc.conf, 按照刚才复制的命令中携带的参数值来修改如下3行配置:

[common]
server_addr=[地址打码]:[地址打码]
conn_type=tcp
vkey=msagf039a4b5i4p9
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
crypt=true
compress=true
#pprof_addr=0.0.0.0:9999
disconnect_timeout=60Code language: CoffeeScript (coffeescript)

保存后PowerShell切到npc的工作目录下, 输入上文复制的这条客户端命令

./npc.exe -server=[地址打码]: [地址打码] -vkey=msagf039a4b5i4p9 -type=tcp

你会看到如下输出:

PS C:\Users\S[ID打码ID打码]t\Desktop\npc> cd C:\Users\S[ID打码ID打码]t\Desktop\npc
PS C:\Users\SS[ID打码ID打码]t\Desktop\npc> .\npc.exe -server=[地址打码]:[地址打码] -vkey=msagf039a4b5i4p9 -type=tcp
2021/12/11 00:54:26.227 [I] [npc.go:231]  the version of client is 0.26.10, the core version of client is 0.26.0
2021/12/11 00:54:26.245 [I] [control.go:97]  Loading configuration file C:\Users\S[ID打码ID打码]t\Desktop\npc\conf\npc.conf
successfully
2021/12/11 00:54:26.574 [N] [control.go:176]  web access login username:user password:1234
2021/12/11 00:54:26.753 [I] [client.go:72]  Successful connection with server [地址打码]:[地址打码]Code language: PowerShell (powershell)

这就算是把npc客户端成功启动了。然后我们回到nps的Web管理页面, 你会看到它的状态已经是在线了, 其客户端ID为3:

如果你觉得每次都需要复制这行代码来启动npc很麻烦, 而且写个bat文件手动双击执行还是不够简单可靠, 可以按照官方文档中的步骤来将npc注册为系统服务。在Windows上依旧是在npc的工作目录下打开Powershell:

  • 注册为服务:
    • ./npc.exe install -server=[地址打码]:[地址打码] -vkey=msagf039a4b5i4p9 -type=tcp
  • 也可以直接指定配置文件来注册:
    • ./npc.exe install -config="C:/Program Files/npc/conf/nps.conf"
  • 启动服务:
    • ./npc.exe start
  • 停止服务:
    • ./npc.exe stop
  • 配置文件检查:
    • ./npc.exe status -config="C:/Program Files/npc/conf/nps.conf"
  • 重新载入配置文件:
    • ./npc.exe restart -config="C:/Program Files/npc/conf/nps.conf"

最后一步, 添加隧道代理规则, 提供外网访问。根据潜渊症Wiki和Steam社区讨论页面的信息, 需要开通的端口就只有两个: UDP的27015和27016——如果在前文的步骤中你没有修改过它们的话。在Web管理页面里进入UDP隧道菜单, 单击[新增]按钮, 为27015和27016两个端口各添加一条隧道:

效果如下:

到此外网访问配置就全部结束了, 进入潜渊症游戏, 在[加入游戏]的时候点[直接加入], 输入 VPS 的公网 IP 和潜渊症服务器密码(如果设置过的话)就能进服快乐打渔了。输入 IP 后可以点击界面上的[加入偏好]按钮来保存这个 IP 地址, 以防每次都记不住服务器 IP 得到处翻记录。

最后祝诸君在海里住得愉快



Bonus: 全员翻船脊刺笑, 存档备份是刚需

游戏中舰长时常把泥头艇开到 80KM/H 与摩洛克一决高下, 然而这种 D.V.A 行为时常撞山翻车; 或者意图刷材料需要经常覆盖存档文件时, 总是 RDP 到服务器上备份存档是个挺烦人的差事。

世界名画:《我的船长我的船》 藏于木卫二联盟美术馆

所以我用 Flask 和 Jinja2 写了个小网页, 在玩游戏等载入的间隙可以拿起手边的手机一键备份存档压缩包。效果如下:

上面的按钮会新建一个当前存档的压缩包来备份存档, 下面的按钮是下载当前目录下最新的存档压缩包。页面很丑? 抱歉, 我们木卫二海贼王不整这些花里胡哨的CSS

要运行这个小小的网页程序, 需要先安装 python 3.8, 不然3.6也行, 反正我是在3.9下写的。然后用 pip3 安装 flask, 因为我在 Windows 上用的是 WinRAR 来压缩的, 所以还需要装个 WinRAR。不装也行, 向 7-zip 传输参数也能压缩和解压, 改一下 subprocess 的代码即可。这个小程序的压缩包在: 这里下载

服务端备份器的使用方法

首先修改一下 __init__,py 里的参数, WINRAR_EXE_DIRECTORY 指定了WinRAR的安装目录, 脚本需要调用里面的 Rar.exe 来创建压缩包; BAROTRAUMA_SAVEDATA_DIRECTORY 指定了潜渊症的存档目录, 压缩文件也会被放置于此:

import os
from flask import Flask
def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True, template_folder='templates')
    app.config.from_mapping(
        SECRET_KEY='canister-unveiled-vigorous',
        WINRAR_EXE_DIRECTORY='C:/Program Files/WinRAR/',
        BAROTRAUMA_SAVEDATA_DIRECTORY='C:/Users/[改成你的用户名]/AppData/Local/Daedalic Entertainment GmbH/'
    )
Code language: Python (python)

然后修改一下启动脚本 startServer.ps1, 它使用 Start-TranscriptStop-Transcript 命令来实现这个小程序的日志记录功能, 所以需要给 transcriptPath 变量指定一个有效目录来存放日志文件:

$transcriptPath = 'D:\WorkSpace\SaveData_Backupper\serverlog.log'
Start-Transcript -Path $transcriptPath
cd D:\WorkSpace\
$env:FLASK_APP = "SaveData_Backupper"
$env:FLASK_ENV = "development"
flask run
Stop-Transcript
Code language: PowerShell (powershell)

最后直接在Powershell里执行这个ps1脚本就能启动网页服务器了, 你可以通过 http://127.0.0.1:5000/BarotraumaSaveData/ 来访问该页面。当然最完美的访问方式还是用 nps 给它一个域名解析, 直接通过域名来访问该页面(比如 https://[你的域名]/BarotraumaSaveData/ ), 以便随时可以用手机浏览器来备份存档。

Like this!

全文完

参考资料

  1. Barotrauma Wiki – Serversettings.xml
  2. Barotrauma Wiki – Clientpermissions.xml
  3. Barotrauma Wiki – List of Config Files
  4. Barotrauma Wiki – Hosting a Dedicated Server
  5. Barotrauma Wiki – Enabling Mods on a Dedicated Server
  6. Barotrauma Wiki – Permissions
  7. 如何在Linux上部署潜渊症服务器 – Bilibili


发表回复

本文目录