DSPAddPlanet moooooon patch
DSPAddPlanet_moooooon_patch: custom DSPAddPlanet fork with moon-of-moon support and GalacticScale-style themes for Dyson Sphere Program.
模組介紹 作者原文
DSPAddPlanet-moon^2-patch
這是 Zincon 維護的《戴森球計劃》DSPAddPlanet 個人 fork,不是原版 DSPAddPlanet,也不是 GalacticScale。
先說在前面:Zincon 本人是一個純代碼小白,甚至不知道應該用什麼軟件編輯代碼。製作這個 Mod 的初衷非常簡單:我純粹是爲了滿足自己遊戲裏的需求,十分希望能做出一個可以自行添加“衛星的衛星”的 Mod。但原作者已經長久不更新,幸好 AI 的發展讓我有機會根據原作者開源出來的代碼,在 AI 協助下製作一個符合自己需求的 Mod。
我也非常感謝《戴森球計劃》的遊戲製作組。沒有這款遊戲本身,就不會有這些折騰星系生成、星球主題和衛星系統的樂趣。
另外,我也很喜歡 GalacticScale 中的一些自制星球主題。因此,這裏做了一個簡單的個人 Mod:保留 DSPAddPlanet 自定義添加星球的思路,加入衛星的衛星功能,並嘗試把一部分 GalacticScale 風格主題帶進 DSPAddPlanet,滿足自己的遊戲需求。
特別感謝:
- LittleSaya / IndexOutOfRangeDSPMod / DSPAddPlanet
- Touhma / DSP Galactic Scale
- 《戴森球計劃》遊戲製作組
- Codex-GPT 和 AI 工具的發展
使用前請務必備份存檔和配置文件。添加或修改星球后,存檔可能無法安全恢復。
相比原版 DSPAddPlanet 新增了什麼
這個 fork 保留原版 DSPAddPlanet 的“通過 XML 自定義添加星球”用法,並額外加入下面這些能力。這裏只列最短寫法,完整示例和注意事項詳見下方。
- 按恆星 ID 添加星球:目標恆星不再必須依賴可能變化的名稱。最短寫法:31。修改恆星名稱、類型或參數後,星球仍會添加到 ID 31;舊的 恆星名 寫法繼續兼容。
- 更清晰的星圖信息面板:左側恆星名直接顯示 ID,右側可以複製完整 UniqueStarId XML;星球按“行星 → 衛星 → 更深層衛星”逐級縮進,同一父星下按 orbitIndex 排序,並顯示最大已用 Index 和建議的下一個 Index。
- 衛星的衛星:新增星球可以圍繞另一顆衛星運行。最短寫法:5。這裏的 5 填父星球的 Index;OrbitAround 仍要保留;OrbitIndex 控制軌道序號;Number 控制該軌道中心下的編號。
- GalacticScale 風格星球主題:不開啓 GalacticScale,也能用 Beach、GiganticForest、SulfurSea 等主題。最短寫法:Beach。ThemeName 和 ThemeId 二選一,推薦用 ThemeName;固態星球通常寫 GasGiant=false。
- GalacticScale 風格氣態巨星:可以添加 Inferno、OilGiant 這類氣態巨星主題。最短寫法:trueOilGiant。氣態巨星建議同時寫 GasGiant=true 和 DontGenerateVein=true。
- 控制新主題是否進入隨機星區生成:可以選擇普通隨機星區是否自然刷出這些新主題。最短寫法:false。這一行寫在 ` 下面;false 表示只在手動指定 ThemeName 時使用;true` 表示隨機生成也可能使用。
- 非 200 半徑星球兼容:使用 100 之類的自定義半徑時會自動生效,無需增加配置行。雲層和本地大氣模糊會跟隨真實半徑;礦機與礦物範圍、傳送帶網格寬度也會按真實半徑計算。半徑小於 100 的固態星球還會使用更密的礦脈碰撞採樣。
- 移除不穩定小型主題:避免 DwarfPlanet、Comet 這類極小星球在原版生成器裏出問題。本 fork 不提供 DwarfPlanet、Comet、BarrenSatellite 這些新增 ThemeName。
可設置參數速查
星球寫在... 裏。常用參數如下,具體寫法詳見下方完整示例。
| 參數 | 用途 |
| --- | --- |
| UniqueStarId | 包含目標存檔、星區字符串和恆星 ID;在 GameNameSpecific 中使用 |
| StarId | 目標恆星 ID,從 1 開始;推薦使用,不受恆星改名影響 |
| Star | 舊版恆星名稱匹配,僅爲兼容舊 XML 保留 |
| IsBirthPoint | 是否把這顆星球設爲出生點 |
| Index | 這顆星球在當前恆星裏的索引,新增星球不要和已有星球重複 |
| OrbitAround | 原版 DSPAddPlanet 的父軌道參數;普通行星寫 0;本 fork 中仍然保留爲必填 |
| OrbitAroundIndex | 本 fork 新增參數,直接按父星球 Index 指定公轉中心,可用於衛星的衛星 |
| OrbitIndex | 軌道序號,會影響和父星球的距離 |
| Number | 同一軌道中心下的星球編號,不要重複 |
| GasGiant | 是否是氣態巨星 |
| ThemeName | 按名字指定主題,推薦用於新增 GalacticScale 風格主題 |
| ThemeId | 按數字指定主題;不推薦用於新增主題,因爲 ID 可能受主題表順序影響 |
| InfoSeed / GenSeed | 星球信息和地形生成種子 |
| ForcePlanetRadius / Radius | 是否強制半徑,以及星球半徑 |
| OrbitalPeriod / RotationPeriod | 公轉週期和自轉週期 |
| IsTidalLocked | 是否潮汐鎖定 |
| OrbitInclination / Obliquity / OrbitLongitude | 軌道傾角、地軸傾角、升交點經度 |
| DontGenerateVein | 是否禁止生成礦物;false 表示允許生成礦物 |
| ReplaceAllVeinsTo | 把礦物統一替換成某一種礦物 |
| VeinCustom | 自定義礦物種類、礦脈數量、礦點數量和礦量 |
按恆星 ID 定位
3.0.13 開始,推薦在 UniqueStarId 中使用恆星 ID:
你的存檔名
你的星區字符串
31
- 恆星 ID 從 1 開始。它表示本次星系中的恆星槽位,例如 ID 31 對應 galaxy.stars[30]。
- 星球 Index 仍從 0 開始。StarId 與星球的 Index 是兩套不同編號,不要混淆。
- 修改 ID 31 恆星的名稱、類型、質量、位置等參數,不會改變 DSPAddPlanet 的目標。
- 增加星區恆星總數時,只要目標 ID 仍然存在且沒有被其他 Mod 重新排序,配置仍會指向相同 ID。
- ClusterString 仍然必填;在 GameNameSpecific 中,GameName 也仍然必填,防止配置誤用到其他星區或存檔。
- 舊寫法 恆星名 繼續兼容。若同一個 UniqueStarId 同時包含 StarId 和 Star,則 StarId 優先。
匹配順序是:特定存檔的 StarId、特定存檔的舊恆星名、全局 StarId、全局舊恆星名。建議同一顆恆星的配置統一遷移到 StarId,不要一部分按 ID、一部分按名稱。
恆星 ID 是星系中的位置編號,並不是跨任意星系重排都不變的全球身份證。當前 CustomCreateBirthStarLite 按固定 ID 修改恆星,不會在恆星數組中間插入或重排,因此與本功能兼容。不要在已有存檔中隨意更改會重新排列恆星或行星的生成配置。
星圖 Add Planet 面板
在遊戲星圖中打開 Add Planet 面板後:
- 左側恆星列表使用 [31] 恆星名 格式,方括號中的數字就是 StarId。長恆星名會在列表寬度內自動縮小。
- 選擇恆星後,右側頂部會直接顯示 Star ID: 31 和 31。
- Copy XML 會複製完整的...,其中包含當前存檔名、星區字符串和恆星 ID,可以直接放進行星配置。
- 摘要行顯示 Planets、Max used Index 和 Next Index。新增星球時通常使用 Next Index;如果你故意保留了索引空缺,仍需自行確認配置連續性。
- 行星列表按實際公轉關係形成樹狀結構。圍繞恆星運行的行星位於第一級,衛星向右縮進一級,衛星的衛星繼續縮進。
- 同一個父星下的子星球優先按 orbitIndex 排列;相同時再按 number 和 index 排列。
- 每顆星球的參數拆成多行,長文本會在面板內換行;內容超過高度時只進行縱向滾動。
非 200 半徑星球兼容
遊戲原版只自然生成半徑 200 的固態星球,因此很多代碼雖然支持讀取 Radius,實際仍帶有半徑 200 的默認假設。3.0.12 針對 GalacticScale 中能確認、並且適合獨立移植的部分做了以下調整:
- 雲層高度:在原版雲層初始化前,按真實半徑縮放大氣材質的內外半徑。雲圖球殼和雲粒子會繼續使用遊戲原版公式,但不
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: