0%

如何搭建戴森球计划的无头服务器

如何搭建戴森球计划联机MOD NebulaMultiplayerMod 的无头服务器

本教程基于有GUI的Linux或者Windows,以Windows作为主要对象

无头服务器

Nebula可以在没有GPU设备的服务器上运行。
以下是运行它的步骤。

  1. Steam

    理论上还支持 XBOX ,但我我没有 XBOX 版的戴森球计划,这里只给出 Steam 版的方法

    如果你在 Steam 上购买了游戏,则需要登录 Steam 才能在服务器上运行游戏。如果你只有一个 Steam 帐户,你可以将 Steam 设置为离线模式,这样就能同时在两台设备上同时启动游戏了。

    在游戏目录根目录(DSPGame.exe 旁边)创建一个 steam_appid.txt 文件,文本为 1366540。这样就能直接从 exe 启动游戏了。

    steam_appid.txt

  2. 模组管理器

    打开 r2modman,前往 Settings -> Debugging -> Set launch parameters,然后在文本框里填入以下内容

    -batchmode -nographics -server -load-latest

    Set launch parameters

    -batchmode表示在“无头”模式下运行应用程序。在此模式下,应用程序不显示任何内容或接受用户输入。
    -nographics表示不使用显卡。
    -server表示启动戴森球计划的无头服务器模式。
    -load-latest表示启动后加载上次退出游戏时自动保存的存档。

  3. BepInEx Console

    默认情况下,BepInEx 控制台窗口是关闭的。启动无头服务器模式后,只能在任务管理器中看到服务器进程,你无法得知服务器运行的具体状态。这里推荐你启用 BepInEx 的控制台。

    你只需要将 BepInEx 的配置文件中的 Logging.Console 选项设置为 true,就可以启用控制台了。

    Logging.Console

    如果没有配置文件的话,你需要先单击左上角的 Start modded 启动一次来生成配置文件。

    另外,也可以在命令行直接启动服务器。
    ./DSPGAME.exe --doorstop-enable true --doorstop-target "C:\Users\Administrator\AppData\Roaming\r2modmanPlus-local\DysonSphereProgram\profiles\Default\BepInEx\core\BepInEx.Preloader.dll" -batchmode -nographics -server -load-latest
    其中 --doorstop-enable true --doorstop-target "C:\Users\Administrator\AppData\Roaming\r2modmanPlus-local\DysonSphereProgram\profiles\Default\BepInEx\core\BepInEx.Preloader.dll" 这部分可以在上面第二步设置 launch parameters 处找到。

  4. 关闭服务器

    在控制台窗口使用 Ctrl+C 关闭服务器。服务器会自动保存然后关闭。

附录

Unity 命令行参数

命令 详情
-batchmode 在“无头”模式下运行应用程序。在此模式下,应用程序不显示任何内容或接受用户输入。
-nographics 当您在批处理模式下使用此参数时,Unity 不会初始化图形设备。
-logFile 指定 Unity 写入编辑器或 Windows/Linux/OSX 独立日志文件的位置。

Nebula 命令行参数

命令 详情
-server 以无头模式启动戴森球计划
-load <savename> 加载指定的存档
-load-latest 加载上次退出时自动保存的存档
-newgame <seed> <starCount> <resourceMultiplier> 新建游戏
-ups <integer value> 以指定的 UPS 运行

Nebula 配置项

Nebula 的配置文件在 BepInEx\config\nebula.cfg

配置项 默认 详情
AutoPauseEnabled true 服务器没人的时候自动暂停游戏
RemoteAccessEnabled false 启用后可在客户端游戏聊天栏简单控制服务器
RemoteAccessPassword 如果提供,这将设置一个密码,用于客户端进行身份验证以访问远程服务器命令
ServerPassword 如果提供,进入服务器将需要输入密码

聊天框命令

RemoteAccessEnabled 设置为 true 时,客户端可以使用以下命令:

命令 详情
/server login [RemoteAccessPassword] /server login hunter2 验证身份以访问远程服务器
/server list [saveNum] /server list 5 按时间和服务器上的保存名称显示最近的 [saveNum] 个保存文件
/server save [saveName] /server save save1 将当前游戏保存为 [saveName]。如果未指定saveName,则会保存到 _lastexit_
/server load <saveName> /server load save1 加载 saveName 存档。当前游戏将会被保存到 _lastexit_
/server info /server info

服务器迁移时需要注意的文件

  • Nebula 将玩家数据存储在存档旁边的单独文件 [SaveName].server 中
  • 确保客户端和服务器中的 player.key 文件不同。文件默认路径为保存文件夹的上层(%userprofile%\Documents\Dyson Sphere Program\player.key)。删除这个文件可以生成新文件并作为新玩家加入。
  • 聊天命令 /playerdata 列出、删除、保存玩家数据。如果你的存档是从别的地方得到的,可以使用这个命令加载上一个会话的玩家数据