戴森球計(jì)劃聯(lián)機(jī)MOD的設(shè)置參數(shù)與進(jìn)階功能
Nebula Multiplayer Mod是非官方的多人連線模組
文章更新時(shí)間: 2022-12-16
游戲版本: 0.9.27.15033 (2022-11-02)
聯(lián)機(jī)MOD版本: 0.8.12 (2022-10-19)
此篇主要是講解聯(lián)機(jī)MOD的特性與進(jìn)階知識(shí),關(guān)于安裝和連線的教程請(qǐng)參考其他文章。
安裝方法可以參考以下文章,推薦使用r2modman管理器

如果無(wú)法使用r2modman可以手動(dòng)下載整合包,里面包含了BepInEx框架和所有前置MOD,解壓縮至游戲根目錄即可。
https://pan.baidu.com/s/18viD2LeQiqOlVIcTSpmuvw?pwd=3vqb
Nebula使用的網(wǎng)路協(xié)定為Websocket
如果不在同一個(gè)區(qū)網(wǎng)內(nèi),主機(jī)需要有公網(wǎng)IP,或內(nèi)網(wǎng)穿透才能連線。
以下是使用者回報(bào)可行的方案或工具:
A. 連接埠轉(zhuǎn)發(fā)-TCP?Port Forwarding
B. 反向代理 - Ngrok, FRP, NATAPP 等
C. VPN - ZeroTier, Tailscale, Hamachi, Radmin, 蒲公英 等
可選適合自己的方案使用。

聯(lián)機(jī)設(shè)置參數(shù)
在游戲內(nèi)Settings -> Multiplayer可以設(shè)定聯(lián)機(jī)的選項(xiàng)。
在游戲外可透過(guò)模組管理器Config editor->nebula.cfg更改。

Nickname:進(jìn)入游戲后顯示的昵稱,需要重新登入才會(huì)生效。
Show Lobby Hints:顯示大廳的提示。
Sync Ups:同步主機(jī)的物理禎。
Sync Soil:共享砂土。只能由主機(jī)設(shè)置,進(jìn)入游戲后不能更改。
Streamer model:直播模式,開(kāi)啟時(shí)會(huì)隱藏IP位址等敏感資訊。

Server Password:主機(jī)密碼,當(dāng)密碼不為空時(shí)客戶需要輸入密碼才能加入游戲。
Host Port:做為主機(jī)時(shí)的連接埠,默認(rèn)端口為8469。
Enable UPnP/Pmp Support:當(dāng)啟用時(shí),會(huì)嘗試使用Open.NAT來(lái)轉(zhuǎn)發(fā)埠。只有在路由器支援UPNP (Universal Plug & Play) 或 PMP (Port Mapping Protocol) 才有效。
Enable Experimental Ngork support:?jiǎn)⒂脙?nèi)建的Ngork支援。
Ngrok Authtoken:注冊(cè)Ngrok帳號(hào)后,將使用者token復(fù)制到這里。
Ngrok Region:可選的區(qū)域有us, eu, au, ap, sa, jp, in。不選則自動(dòng)指定。
Rememeber Last IP:記住上一次登入的IP。
Rememeber Last Client Password:記住上一次登入的密碼。
Enable Discord RPC:?jiǎn)⒂肈iscord活動(dòng)動(dòng)態(tài)。
Auto accpet Discord join requests:自動(dòng)接受Discord的加入請(qǐng)求。
IP Configuration:設(shè)置Discord動(dòng)態(tài)用哪種IP(IPv4, IPv6, Both)。
Cleanup inactive sessions:自動(dòng)清理不活躍的連線。

Auto Open Chat:玩家說(shuō)話時(shí),自動(dòng)開(kāi)啟聊天視窗。
Show system warn message:顯示系統(tǒng)警告訊息。
Show system info message:顯示系統(tǒng)通知訊息。
Default chat position:聊天室視窗位置。
Default chat size:聊天室視窗尺寸。
Notification duration:通知停留時(shí)間(秒)。

多人游戲特點(diǎn)
大廳

第一次進(jìn)入游戲時(shí)會(huì)引導(dǎo)至大廳。
點(diǎn)擊行星可以查看星球訊息,再點(diǎn)擊一次可以改變起始星球。
點(diǎn)擊恒星可以展開(kāi)星系,點(diǎn)擊外面可離開(kāi)。
注意:如果使用GalacticScale模組的話,要改用右鍵選擇起始星球。
之后再次加入游戲會(huì)從最后離開(kāi)的位置繼續(xù)。
聊天/命令視窗

Alt + ~ 可以打開(kāi)聊天視窗,可以在設(shè)置->鍵位->Show or Hide Chat Window設(shè)置
可以和游戲內(nèi)的玩家對(duì)話,不過(guò)有些字體可能無(wú)法顯示
右邊笑臉可以選擇Emoji,圖片可以選擇游戲內(nèi)的標(biāo)示
以下是一些可用指令以及它們的說(shuō)明:
/help (/h /?)????????????????/h: 顯示可用命令 /h command: 顯示command用法
/who (/players /list)????顯示所有玩家的所在位置
/whisper (/w /tell /t)????/w 玩家名稱 悄悄話內(nèi)容
/info???????????????????????????/info 顯示內(nèi)外網(wǎng)IP, /info full 顯示使用的模組
/clear?????????????????????????/clear 清除命令, /clear all 清除所有訊息
/xconsole (/x)????????????使用開(kāi)發(fā)者命令,可用/x -help查看所有命令
/navigate (/n)? ? ? ? ? ??顯示導(dǎo)航線至...(見(jiàn)以下) /n clear 清除導(dǎo)航線
/n <Astro|AstroId>? ? ? ?導(dǎo)航至 星體名稱 或 星體id
/n p <player|playerId> 導(dǎo)航至 玩家名稱 或 玩家id
/system (/s) ????????? ? ? 列出 恒星名稱 星系的所有星球
/reconnect (/r)????????? ?快速重新連線
資源共享
游戲內(nèi)的科技是共享的,每個(gè)玩家的機(jī)甲個(gè)人實(shí)驗(yàn)室產(chǎn)生的哈希值將會(huì)貢獻(xiàn)到主機(jī)。
目前只有主機(jī)玩家可以使用元數(shù)據(jù)買斷科技。
砂土默認(rèn)設(shè)置是不共享。啟用砂土共享時(shí),在線玩家的砂土將會(huì)加總成一個(gè)共享池,每次獲得或消耗砂土?xí)r將均攤到每一個(gè)在線玩家上。
存檔與數(shù)據(jù)
只有主機(jī)能夠存檔,并且分析面板的保存測(cè)試無(wú)法使用。
主機(jī)端會(huì)將玩家的資料存在[存檔名稱].server,于游戲存檔同一個(gè)位置。
客戶端會(huì)在我的文件/Dyson Sphere Program中產(chǎn)生player.key
登入時(shí)會(huì)以player.key做憑證,因此將player.key刪除就會(huì)以新玩家的身分加入游戲。
成就與銀河系
客戶端無(wú)法解鎖成就,需要配合其他MOD。
無(wú)法觀看和上傳銀河系。 (不過(guò)如果存檔沒(méi)有數(shù)據(jù)異常,可以在單人游戲中上傳)
動(dòng)態(tài)載入
為了節(jié)省頻寬,客戶端只有在到達(dá)新的星球時(shí)才會(huì)向主機(jī)請(qǐng)求星球上工廠的資料,而且在離開(kāi)星系時(shí)就會(huì)把工廠全部卸載。因此在玩家登陸一個(gè)新的星球時(shí)可能會(huì)有一段時(shí)間星球的表面沒(méi)有工廠,可以在左上角查看下載進(jìn)度。
戴森球的數(shù)據(jù)則是在客戶端進(jìn)入一個(gè)新的星系,或著編輯面板切換星系時(shí)請(qǐng)求。
游戲速度同步
為了保持游戲狀態(tài)的一致性,客戶端會(huì)盡量和主機(jī)端的時(shí)間流速相同。主機(jī)端可以用控制臺(tái)命令-upsfix [ups]來(lái)控制邏輯禎率,比方說(shuō)/x -upsfix 120就是兩倍速。
目前Sync UPS選項(xiàng)開(kāi)啟的話,可接受的范圍為0~120UPS。而要放慢游戲速度可以通過(guò)統(tǒng)計(jì)面板-效能分析的拉條,設(shè)為0%時(shí)進(jìn)入時(shí)停模式,工廠的運(yùn)作將會(huì)停止。
當(dāng)玩家加入、載入工廠資料時(shí)會(huì)進(jìn)入時(shí)停模式,如果因?yàn)榭蛻糁袛噙B線而卡在時(shí)停模式可以拉動(dòng)滑桿恢復(fù)。
客戶端無(wú)法暫停,主機(jī)端只有在沒(méi)有其他人連接時(shí)按ESC才會(huì)暫停游戲,用伺服器的話可以在ESC畫(huà)面掛機(jī)來(lái)達(dá)到?jīng)]人時(shí)自動(dòng)暫停的效果。
其他

當(dāng)紅字出現(xiàn)時(shí),按Copy鈕可以復(fù)制并關(guān)閉錯(cuò)誤訊息。
大部分客戶端的錯(cuò)誤可通過(guò)重新連線解決。
可以在Nebula的Discord伺服器中或Github上回報(bào)。
進(jìn)階:設(shè)置技巧
以steam離線模式運(yùn)行:在游戲文件夾中加入steam_appid.txt,內(nèi)容文字為1366540
雙開(kāi)游戲視窗:在游戲文件夾\DSPGAME_Data\boot.config文件中移除single-instance=
改變存檔位置:在游戲文件夾\Configs\path.txt輸入新的存檔路徑
存檔路徑默認(rèn)為我的文件\Dyson Sphere Program\Save
在上一層的options.xml可以在修改如存檔間隔(AutosavingInterval)等游戲設(shè)置
進(jìn)階:無(wú)頭伺服器
https://github.com/hubastard/nebula/wiki/Setup-Headless-Server
在無(wú)頭模式下,可以在沒(méi)有GPU的伺服器運(yùn)行主機(jī)。
參數(shù)說(shuō)明可參考wiki。范例命令如下:
此命令會(huì)以無(wú)頭模式啟動(dòng)主機(jī),并載入名為"save1"的存檔。
此命令會(huì)以無(wú)頭模式啟動(dòng)主機(jī),并載入最新的存檔。日志會(huì)保存在log.txt中,并將游戲速度設(shè)為4倍速。
注意Steam版要設(shè)置steam_appid.txt才能以./DSPGAME.exe的方式啟動(dòng)游戲。
在BepInEx\config\nebula.cfg可以設(shè)置伺服器相關(guān)參數(shù)
AutoPauseEnabled:在沒(méi)有連線玩家時(shí)自動(dòng)暫停(默認(rèn)為True)
RemoteAccessEnabled:?jiǎn)⒂眠h(yuǎn)端控制命令(默認(rèn)為False)
RemoteAccessPassword:若不為空時(shí),遠(yuǎn)端控制命令需要先提供密碼才能使用
當(dāng)遠(yuǎn)端控制命令啟用時(shí),客戶端可以通過(guò)/server 命令對(duì)伺服器進(jìn)行操作:
/server login [password]?????輸入[密碼]以獲得權(quán)限
/server list [saveNum]????????列出[saveNum]個(gè)最近的存檔
/server save [saveName]???保存游戲至[saveName]。若名稱無(wú)指定,將存至_lastexit_
/server load [saveName]????從[saveName]載入游戲。若名稱無(wú)指定,將載入_lastexit_
/server info?[full]????????????????? 顯示主機(jī)的資訊
關(guān)于docker可以參考以下的repo
https://github.com/AlienXAXS/DSPNebulaDocker