戴森球计划联机MOD的设置参数与进阶功能
Nebula Multiplayer Mod是非官方的多人连线模组
文章更新时间: 2022-12-16
游戏版本: 0.9.27.15033 (2022-11-02)
联机MOD版本: 0.8.12 (2022-10-19)
此篇主要是讲解联机MOD的特性与进阶知识,关于安装和连线的教程请参考其他文章。
安装方法可以参考以下文章,推荐使用r2modman管理器

如果无法使用r2modman可以手动下载整合包,里面包含了BepInEx框架和所有前置MOD,解压缩至游戏根目录即可。
https://pan.baidu.com/s/18viD2LeQiqOlVIcTSpmuvw?pwd=3vqb
Nebula使用的网路协定为Websocket
如果不在同一个区网内,主机需要有公网IP,或内网穿透才能连线。
以下是使用者回报可行的方案或工具:
A. 连接埠转发-TCP Port Forwarding
B. 反向代理 - Ngrok, FRP, NATAPP 等
C. VPN - ZeroTier, Tailscale, Hamachi, Radmin, 蒲公英 等
可选适合自己的方案使用。

联机设置参数
在游戏内Settings -> Multiplayer可以设定联机的选项。
在游戏外可透过模组管理器Config editor->nebula.cfg更改。

Nickname:进入游戏后显示的昵称,需要重新登入才会生效。
Show Lobby Hints:显示大厅的提示。
Sync Ups:同步主机的物理祯。
Sync Soil:共享砂土。只能由主机设置,进入游戏后不能更改。
Streamer model:直播模式,开启时会隐藏IP位址等敏感资讯。

Server Password:主机密码,当密码不为空时客户需要输入密码才能加入游戏。
Host Port:做为主机时的连接埠,默认端口为8469。
Enable UPnP/Pmp Support:当启用时,会尝试使用Open.NAT来转发埠。只有在路由器支援UPNP (Universal Plug & Play) 或 PMP (Port Mapping Protocol) 才有效。
Enable Experimental Ngork support:启用内建的Ngork支援。
Ngrok Authtoken:注册Ngrok帐号后,将使用者token复制到这里。
Ngrok Region:可选的区域有us, eu, au, ap, sa, jp, in。不选则自动指定。
Rememeber Last IP:记住上一次登入的IP。
Rememeber Last Client Password:记住上一次登入的密码。
Enable Discord RPC:启用Discord活动动态。
Auto accpet Discord join requests:自动接受Discord的加入请求。
IP Configuration:设置Discord动态用哪种IP(IPv4, IPv6, Both)。
Cleanup inactive sessions:自动清理不活跃的连线。

Auto Open Chat:玩家说话时,自动开启聊天视窗。
Show system warn message:显示系统警告讯息。
Show system info message:显示系统通知讯息。
Default chat position:聊天室视窗位置。
Default chat size:聊天室视窗尺寸。
Notification duration:通知停留时间(秒)。

多人游戏特点
大厅

第一次进入游戏时会引导至大厅。
点击行星可以查看星球讯息,再点击一次可以改变起始星球。
点击恒星可以展开星系,点击外面可离开。
注意:如果使用GalacticScale模组的话,要改用右键选择起始星球。
之后再次加入游戏会从最后离开的位置继续。
聊天/命令视窗

Alt + ~ 可以打开聊天视窗,可以在设置->键位->Show or Hide Chat Window设置
可以和游戏内的玩家对话,不过有些字体可能无法显示
右边笑脸可以选择Emoji,图片可以选择游戏内的标示
以下是一些可用指令以及它们的说明:
/help (/h /?) /h: 显示可用命令 /h command: 显示command用法
/who (/players /list) 显示所有玩家的所在位置
/whisper (/w /tell /t) /w 玩家名称 悄悄话内容
/info /info 显示内外网IP, /info full 显示使用的模组
/clear /clear 清除命令, /clear all 清除所有讯息
/xconsole (/x) 使用开发者命令,可用/x -help查看所有命令
/navigate (/n) 显示导航线至...(见以下) /n clear 清除导航线
/n <Astro|AstroId> 导航至 星体名称 或 星体id
/n p <player|playerId> 导航至 玩家名称 或 玩家id
/system (/s) 列出 恒星名称 星系的所有星球
/reconnect (/r) 快速重新连线
资源共享
游戏内的科技是共享的,每个玩家的机甲个人实验室产生的哈希值将会贡献到主机。
目前只有主机玩家可以使用元数据买断科技。
砂土默认设置是不共享。启用砂土共享时,在线玩家的砂土将会加总成一个共享池,每次获得或消耗砂土时将均摊到每一个在线玩家上。
存档与数据
只有主机能够存档,并且分析面板的保存测试无法使用。
主机端会将玩家的资料存在[存档名称].server,于游戏存档同一个位置。
客户端会在我的文件/Dyson Sphere Program中产生player.key
登入时会以player.key做凭证,因此将player.key删除就会以新玩家的身分加入游戏。
成就与银河系
客户端无法解锁成就,需要配合其他MOD。
无法观看和上传银河系。 (不过如果存档没有数据异常,可以在单人游戏中上传)
动态载入
为了节省频宽,客户端只有在到达新的星球时才会向主机请求星球上工厂的资料,而且在离开星系时就会把工厂全部卸载。因此在玩家登陆一个新的星球时可能会有一段时间星球的表面没有工厂,可以在左上角查看下载进度。
戴森球的数据则是在客户端进入一个新的星系,或着编辑面板切换星系时请求。
游戏速度同步
为了保持游戏状态的一致性,客户端会尽量和主机端的时间流速相同。主机端可以用控制台命令-upsfix [ups]来控制逻辑祯率,比方说/x -upsfix 120就是两倍速。
目前Sync UPS选项开启的话,可接受的范围为0~120UPS。而要放慢游戏速度可以通过统计面板-效能分析的拉条,设为0%时进入时停模式,工厂的运作将会停止。
当玩家加入、载入工厂资料时会进入时停模式,如果因为客户中断连线而卡在时停模式可以拉动滑杆恢复。
客户端无法暂停,主机端只有在没有其他人连接时按ESC才会暂停游戏,用伺服器的话可以在ESC画面挂机来达到没人时自动暂停的效果。
其他

当红字出现时,按Copy钮可以复制并关闭错误讯息。
大部分客户端的错误可通过重新连线解决。
可以在Nebula的Discord伺服器中或Github上回报。
进阶:设置技巧
以steam离线模式运行:在游戏文件夹中加入steam_appid.txt,内容文字为1366540
双开游戏视窗:在游戏文件夹\DSPGAME_Data\boot.config文件中移除single-instance=
改变存档位置:在游戏文件夹\Configs\path.txt输入新的存档路径
存档路径默认为我的文件\Dyson Sphere Program\Save
在上一层的options.xml可以在修改如存档间隔(AutosavingInterval)等游戏设置
进阶:无头伺服器
https://github.com/hubastard/nebula/wiki/Setup-Headless-Server
在无头模式下,可以在没有GPU的伺服器运行主机。
参数说明可参考wiki。范例命令如下:
此命令会以无头模式启动主机,并载入名为"save1"的存档。
此命令会以无头模式启动主机,并载入最新的存档。日志会保存在log.txt中,并将游戏速度设为4倍速。
注意Steam版要设置steam_appid.txt才能以./DSPGAME.exe的方式启动游戏。
在BepInEx\config\nebula.cfg可以设置伺服器相关参数
AutoPauseEnabled:在没有连线玩家时自动暂停(默认为True)
RemoteAccessEnabled:启用远端控制命令(默认为False)
RemoteAccessPassword:若不为空时,远端控制命令需要先提供密码才能使用
当远端控制命令启用时,客户端可以通过/server 命令对伺服器进行操作:
/server login [password] 输入[密码]以获得权限
/server list [saveNum] 列出[saveNum]个最近的存档
/server save [saveName] 保存游戏至[saveName]。若名称无指定,将存至_lastexit_
/server load [saveName] 从[saveName]载入游戏。若名称无指定,将载入_lastexit_
/server info [full] 显示主机的资讯
关于docker可以参考以下的repo
https://github.com/AlienXAXS/DSPNebulaDocker