如何搭建戴森球计划联机MOD NebulaMultiplayerMod 的无头服务器
本教程基于有GUI的Linux或者Windows,以Windows作为主要对象
无头服务器
Nebula可以在没有GPU设备的服务器上运行。
以下是运行它的步骤。
Steam
理论上还支持 XBOX ,但我我没有 XBOX 版的戴森球计划,这里只给出 Steam 版的方法
如果你在 Steam 上购买了游戏,则需要登录 Steam 才能在服务器上运行游戏。如果你只有一个 Steam 帐户,你可以将 Steam 设置为离线模式,这样就能同时在两台设备上同时启动游戏了。
在游戏目录根目录(DSPGame.exe 旁边)创建一个
steam_appid.txt
文件,文本为1366540
。这样就能直接从 exe 启动游戏了。模组管理器
打开 r2modman,前往 Settings -> Debugging -> Set launch parameters,然后在文本框里填入以下内容
-batchmode -nographics -server -load-latest
-batchmode
表示在“无头”模式下运行应用程序。在此模式下,应用程序不显示任何内容或接受用户输入。-nographics
表示不使用显卡。-server
表示启动戴森球计划的无头服务器模式。-load-latest
表示启动后加载上次退出游戏时自动保存的存档。BepInEx Console
默认情况下,BepInEx 控制台窗口是关闭的。启动无头服务器模式后,只能在任务管理器中看到服务器进程,你无法得知服务器运行的具体状态。这里推荐你启用 BepInEx 的控制台。
你只需要将 BepInEx 的配置文件中的
Logging.Console
选项设置为true
,就可以启用控制台了。如果没有配置文件的话,你需要先单击左上角的
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 处找到。关闭服务器
在控制台窗口使用 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
列出、删除、保存玩家数据。如果你的存档是从别的地方得到的,可以使用这个命令加载上一个会话的玩家数据