Repo ↗ · 原始 README ↗ · 文件包(Markdown/授權)
封面參考(原作): Subnautica · 原作宣傳圖,由 IGDB 提供。圖片版權屬原權利人,供辨識原作使用,不代表此重寫/模組專案的實際畫面。
來源維護者: kuba001-pl · 版本: 55f16714753c · 整理日期: 2026-10-12
文件授權: MIT · LICENSE-APACHE · LICENSE-MIT · 本文形式: README 翻譯
下文為來源 README 的繁中翻譯,由 Kirikirin 使用 AI 輔助整理;功能、完成度與測試結果均為原作者描述,本站未逐項實機驗證。圖片改為來源連結,指令與技術識別保留原文。
subnautica-rs
一個非官方、從零開始的 Rust 重實作,將 Subnautica 引擎帶到桌上型電腦。它在執行階段讀取你自己安裝的 Subnautica 副本中的資料。這個儲存庫不包含任何遊戲檔案,也永遠不會包含。
非官方粉絲專案,與 Unknown Worlds 或 Krafton 無隸屬關係,亦未獲其背書。你需要合法擁有的 Subnautica 副本。開發過程大量使用 AI 編碼代理;它們遵循的規則請見
AGENTS.md。
狀態:早期(積極開發中)。桌上型用戶端(sn-client)會串流地形、材質、世界物件、光照與玩家移動;遊戲玩法系統與多人模式正在進行中。架構與路線圖在
docs/DESIGN.md,檔案格式發現則在
docs/formats/。
目前可用的功能
已在 Windows 11、遊戲組建 10(Steam)上測試:
- 解碼全部 5,416 個地形八元樹批次檔(
.optoctrees,約 1.1 GB):
669,150 個八元樹,每一個都通過結構驗證,耗時不到一秒。 - 八元樹資料的空間配置(子節點順序、八元樹順序、+Y 向上),
已從接縫連續性確認。 - 讀取世界索引(
index.txt):世界、八元樹與批次尺寸。 - 將地形轉為網格(surface nets)並匯出為 OBJ 供
Blender 使用。相鄰批次的網格接合後沒有破洞。 - 讀取 Unity 的容器:全部 5,467 個資源包與玩家的
.assets檔案(423,677 個物件),與 UnityPy 的清單完全一致。 - 解碼遊戲的貼圖(在 506 張貼圖的樣本上與 UnityPy 逐像素一致)
並找出所有地形材質(233 種類型、211 張貼圖)。 - 讀取每個世界物件的放置位置(
sn-inspect entities):全部
4,581 個放置檔案、419,846 個物件,每個都解析到其預製物名稱
(prefabs.db),耗時約一秒。 - 透過 Addressables 目錄載入預製物並解碼其網格
(sn-inspect prefab,匯出為 OBJ 到out/prefabs/):全部 1,369 個已放置
預製物及其 3,263 個網格,在每個頂點與三角形數量上都與 UnityPy 一致。 - 讀取生物群系地圖與全部 145 個生物群系的水體設定
(sn-inspect biomes、sn-inspect biomes --at X Y Z)。 - 讀取遊戲玩法資料(無頭模式,用戶端尚未使用):
Balance/TechData的全部 463
個配方/物品項目、預製物 → 科技類型對應表、
玩家的數值(氧氣、生命值、游泳與步行速度),以及
主場景(sn-inspect techdata、sn-inspect player)中的起始藍圖與解鎖項目
(PDAData),還有已放置預製物的每個碰撞體
(sn-inspect prefab --colliders)。 - 玩家的身體:遊戲在新遊戲中顯示的套裝模型,
由遊戲的控制器以其空手規則驅動動畫(行走、
游泳、水面、墜落、死亡),並如遊戲般隨視角轉向與上下擺動;
頭部會投射陰影,但在第一人稱中不會被繪製;相機位於遊戲的眼位
(sn-inspect player --body;在sn-client中往下看就能看到它,--third-person可在玩家身後
取得除錯相機)。其動作尚未與遊戲並排比較過。 - 讀取遊戲僅保留在其程式碼中的內容,來源是玩家自己的
Assembly-CSharp.dll,使用我們自己的 .NET 讀取器(sn-inspect code):全部
793 個科技類型名稱、7 個製作選單(159 個節點;--trees會列印
它們)以及 TechData 的預設值;DLL 的每個方法主體都能解碼。 - 碰撞(
sn-sim):玩家的膠囊體對全解析度地形
與已放置物件的碰撞體進行掃掠,單向判定,與遊戲相同。sn-inspect swim會從救生艙
沿著海床游到最近的 Kelp Forest;在種子 1–5 中,它以 0
穿透抵達,每步約 13–19 µs。 - 玩家,使用遊戲的數值:在救生艙與陸地上以重力、階梯與
斜坡行走;以遊戲的速度、阻力與水面規則游泳。救生艙的艙門播放遊戲的
過場動畫:艙門開啟、身體隨艙體的動畫攀爬,
相機跟隨遊戲的錨點(sn-inspect walk/dive
在種子 1–5 上檢查持續時間;在sn-client中於艙門按 E,或
--use-hatch SECONDS[,SECONDS…]讓它自動完成,--hatch-name
選擇哪一個,--hold-forward SECONDS之後再行走)。死亡後相機
跟隨頭部(--kill SECONDS可看到它)。sn-inspect walk以無頭模式執行
救生艙 → 水中 → 救生艙,0 穿透。在sn-client中你就是玩家(飛行相機為
--free-cam)。以鍵盤與滑鼠遊玩尚未由代理測試。 - 氧氣、窒息、生命值、死亡與在救生艙中重生,使用
遊戲的數值(45 單位,依深度每秒 1 / 1.5 / 2,在水面每秒回填
30,8 秒後昏厥)。sn-inspect dive執行
一次潛到海床直到玩家死亡並重生的下潛,接著是一次因浮出水面而
提前結束的下潛;種子 1–5 通過。滑鼠視角使用遊戲的規則、
預設靈敏度與 ±87° 俯仰限制。sn-client顯示我們自己的
HUD:氧氣與生命條、深度、黑幕覆蓋。HUD
版面與實際遊玩時的外觀尚未由代理測試。 sn-client:一個桌上型視窗(Bevy),第一人稱或飛行相機。地形會隨著你移動
串流進出,具有四級細節層次最遠至 1.2 公里,以遊戲自身的地形材質
貼圖,並以遊戲的方式在相鄰材質之間混合(每個區塊的圖層、柔和參差的邊界、
依坡度進行的頂面/側面轉換),世界中的已放置物件(珊瑚、
植物、岩石、殘骸;救生艙周圍約 15,000 個)隨之串流進來,
再加上遊戲的生成槽在新世界開始時所填充的內容
(資源露頭、卵、碎片;以固定種子挑選,
--slot-seed),以及地形在約 100 公尺內生長的草(海草、
Grassy Plateaus 的紅色海藻、小型珊瑚;遊戲的放置
規則與草著色器:色調、高度漸層、擺動),還有遊戲在開始時生成的場景:
Aurora(如新遊戲中完好無損,依遊戲時鐘與遊戲的倒數規則
換成殘骸,--aurora-countdown、--time-scale,或以--aurora intact | exploded保持),以及其
場景所包含的先驅者基地與 Lost River 樹木,還有 Lifepod 5 以遊戲的方式繪製的起始點(從其
有效起始點地圖;可設種子,--lifepod-seed,或--lifepod X Z),連同
其製造機、無線電、醫療櫃與動力電池;相機從玩家所在之處開始;
透過遊戲自身的水體霧效模型觀看(顏色與距離
依生物群系),在遊戲的太陽與天空光照下跟隨工作階段時鐘
(--time設定起始時間;--time-scale 0凍結它),具有遊戲的水面(模擬或烘焙波浪、泡沫、
反射、折射、陽光閃爍;從上方與下方觀看),在
遊戲的天空下(散射、太陽、雲、行星、月亮;日到夜),以
遊戲照亮表面的方式打光(焦散、水下減弱的陽光、
遊戲的環境光;SIG 珊瑚/岩石及其高光與發光通道,
有頂蓋的岩石具有分開的頂面/側面貼圖與法線貼圖;物件具有其高光貼圖、具有日
夜強度的發光貼圖,以及每個生物群系的環境光設定;位於遊戲相機
跳過之圖層上的渲染器,例如外星基地的遮擋外殼,會被略過;已放置物件攜帶的點光、聚光與
方向光,例如發光珊瑚,不帶其陰影;離子晶體基座與先驅者
燈光下方的假光暈,使用遊戲已解碼的著色器及其透明度合成,
由它們的燈光上色,如遊戲的腳本所做;先驅者控制台的
全像投影與快取門的力場,使用遊戲已解碼的效果
著色器(捲動貼圖、柔和邊緣、變形、折射);
遊戲從預製物的預留位置生成的物件,例如快取門、
鑰匙終端與基座晶體;這些都尚未與遊戲在畫面上比較過);物件上遊戲的動畫器(M7f4:其自身的
控制器、轉場與圖層每幀執行;動畫化的 Transform
移動,蒙皮網格在 GPU 上彎曲,混合形狀跟隨其動畫化的
權重;例如 Lifepod 5 的船體、卵、先驅者終端、擺動的
腦珊瑚與珠寶圓盤;尚未與遊戲在畫面上比較過);物件與場景依
距離在細節層次之間切換,使用遊戲的LODGroup、其 High 品質lodBias及其
60° 視野(--no-lod、--fov;Unity 記載的規則,尚未
與遊戲在畫面上比較過);Lifepod 5 自身的燈光:其天空
照亮救生艙(而且當你在裡面時,照亮所有沒有自身天空的
東西),其光照狀態設定天空與紅色警示燈
(--lifepod-state,預設為損壞,如序章之後;尚未與
遊戲在畫面上比較過)。從救生艙
飛到隕石坑邊緣
可將記憶體保持在 1.6 GiB 以下,在 RTX 3080 上平均約 220 fps
(在密集的起始區域約 100 fps)。
目前還不能用的功能
水體裁剪圖(救生艙與基地內沒有水、
岸邊泡沫);逐像素的水體設定(到處都使用
相機的設定);Lifepod 5 漂浮在波浪上、其
序章,以及其模組依電力狀態的發光;
Aurora 的爆炸效果、音效與警告、火與煙;
玩家儲存的細節層級與視野選項(假設為 High 與 60°);地形草
超過約 100 公尺,以及遊戲中確切位置的草叢(數量與
分布遵循其規則;使用我們自己的隨機數);世界物件方面:生物群系
天空立方貼圖的反射、由大氣體積選擇的洞穴/室內天空、
動畫化的燈光、材質與腳本數值、其餘不支援的物件
著色器(Lost River 鹵水、沙瀑與熔岩瀑及其他尚未解碼的效果
網格是平面的;與原遊戲相符的 SIG 岩石/珊瑚比較尚未測試;
docs/formats/materials.md)、生物(包括生成槽會加入的
約 100,000 個);序章過場動畫、工具、PDA 與 IK、改變
速度的氧氣瓶與蛙鞋、遊戲自身的 HUD 與傷害效果;音訊、
多人模式(目前有無頭的 sn-server 與機器人玩家,也使用
玩家自身的規則與碰撞,在單一機器上透過 UDP;遊戲
用戶端即使在單人遊玩時也會執行自己的行程內伺服器,並且可以主持
(--host)或加入(--join)遊戲:其他玩家的身體、動畫、
艙門過場動畫、死亡與重生都會同步;已在單一機器上以兩個
用戶端測試,尚未透過網際網路;沒有加密,供
互相信任的朋友使用)。
Linux/macOS:尚未測試。
試用
你需要 Rust(stable),以及在 Windows 上需要具有 C++ 工具與
Windows SDK 的 Visual Studio。
# Point at the folder that contains Subnautica.exe
export SUBNAUTICA_DIR="D:/SteamLibrary/steamapps/common/Subnautica" # PowerShell: $env:SUBNAUTICA_DIR = "..."
cargo run -p sn-inspect -- index # world dimensions
cargo run -p sn-inspect -- octree 12 18 12 # statistics for one terrain batch
cargo run -p sn-inspect -- octree --all # decode and validate every batch
cargo run -p sn-inspect -- orient 7 17 10 # show how octree data maps onto space
cargo run -p sn-inspect -- mesh 12 18 12 --radius 1 # Safe Shallows → out/*.obj
cargo run -p sn-inspect -- mesh 12 18 12 --radius 1 --lod 2 # coarser level of detail
cargo run -p sn-inspect -- voxel 0 -10 0 # what's at a world position, surfaces below
cargo run -p sn-inspect -- unity --types resources.assets # what's inside a Unity file
cargo run -p sn-inspect -- unity --all # parse every Unity file of the game
cargo run -p sn-inspect -- textures --census # texture formats in the game
cargo run -p sn-inspect -- terrain-materials # terrain type → material → textures
cargo run -p sn-client # fly around, starting in the lifepod
cargo run -p sn-client -- --view 2000 # see further
cargo run -p sn-client -- --flythrough 1700 -80 0 # automated test flight to the crater edge
# Multiplayer (experimental, M10): play together, see "Play together" below.
cargo run --release -p sn-client -- --host # host on UDP 27420
cargo run --release -p sn-client -- --join 192.168.1.20 --name Ann # join it
cargo run --release -p sn-server -- --port 27420 # or a headless server
cargo run --release -p sn-inspect -- bots 127.0.0.1:27420 --count 8 --seconds 60
cargo run --release -p sn-inspect -- coop 127.0.0.1:27420 # bots with the player's rules, lan/internet/bad
cargo test --workspace # tests that don't need the game
cargo test -p sn-octree -- --ignored # full-world test (needs SUBNAUTICA_DIR)
sn-inspect 只會讀取遊戲資料夾;它永遠不會寫入其中。匯出檔會放到
out/,該處已列入 gitignore。它們衍生自你的遊戲檔案:請勿
分享它們。
視覺效能基準
若要使用已儲存的設定與數值化場景計數進行固定相機基準測試,
請使用新的基準名稱與明確的來源修訂/組建標籤:
# SUBNAUTICA_DIR must point to your install. Choose a new name for each run.
cargo run --release -p sn-client -- --benchmark 300 --baseline shallows-review-1 --baseline-revision working-tree --warmup 120 --resolution 1600 900 --start 0 -10 0 --look 60 -40 60 --fov 60 --view 1200 --lifepod-seed 1 --slot-seed 1 --time 9.6 --time-scale 0 --aurora intact --water-quality high --color-grading off --gpu-timings
這會將 report.txt、frames.csv 與 capture.png 儲存在
out/baselines/run-shallows-review-1/ 下。既有的名稱會被拒絕。將
working-tree 替換為你的修訂,並變更標籤以識別組建。
名稱/標籤接受字母、數字、- 與 _。具名基準需要
單人基準測試;它們預設為 120 個連續的穩定暖機幀。
--resolution 指定實體像素。幀計時使用真實、未箝制的
時間;報告包含中位數/p95/p99、場景計數、相機、霧、天空、水體
時間與近期 GPU 診斷平均值。
在這些設定下進行三次 300 幀的執行,與靜態場景計數及
1600 × 900 擷取尺寸相符。在 RTX 3080 上,中位數幀時間為 17.69–17.86 ms
(高於 16.7 ms 的目標)。動畫、波浪與泡沫歷史仍會持續運作:
--time-scale 0 凍結遊戲時鐘,不是那些效果。這些報告
是效能基準,不是像素完全相同擷取或與原遊戲相符的證明。原遊戲視覺比較:尚未測試。
一起遊玩(實驗性)
每位玩家都需要自己安裝的 Subnautica 副本、相同的遊戲組建,以及從相同版本建置的此專案(否則會拒絕加入,並附上原因)。遊戲中的任何內容都不會透過網路傳送:只有位置、動畫值、事件和檢查。
- 主機:
sn-client --host(或--host PORT;預設 UDP 27420)。
主機的旗標決定世界(--lifepod-seed、--slot-seed、
--time、--aurora…)。無介面的sn-server也可以運作。 - 加入:
sn-client --join ADDRESS[:PORT] --name NAME。主機的
世界會取代你的世界旗標。 - 透過網際網路: 主機在其
路由器上將 UDP 連接埠 27420 轉送到其 PC(或兩者位於同一個區域網路或 VPN)。沒有
中繼或 NAT 打洞:那會需要第三方服務。 - 已同步: 每位玩家的位置、視角、游泳和行走
動畫、救生艙艙門過場動畫(門和攀爬:已記錄,尚未以肉眼檢查)、死亡
和重生、遊戲時鐘和極光號。尚未: 物品、
物品欄、製作、存檔、生物、聊天、玩家碰撞。 - 信任: 用戶端尚無加密和密碼:適用於
朋友,不適用於公開伺服器。 - 已測試: 同一台機器上的兩個用戶端(也包含模擬延遲
和封包遺失)。未測試: 透過網際網路的兩台機器。
配置
| 路徑 | 內容 |
|---|---|
crates/sn-octree |
地形八叉樹的讀取器/寫入器(純粹,無相依性) |
crates/sn-world |
世界配置:index.txt、批次定址 |
crates/sn-mesh |
表面網路網格化器和網格拓撲檢查(純粹,無相依性) |
crates/sn-terrain |
地形批次 → 網格化欄位 → 網格(純粹) |
crates/sn-unity |
Unity 容器:UnityFS 套件組合、序列化檔案(純粹) |
crates/sn-assets |
跨套件組合尋找 Unity 物件;地形材質 |
crates/sn-install |
尋找遊戲資料夾並讀取其檔案(唯讀) |
crates/sn-protocol |
多人遊戲訊息及其二進位編解碼器(純粹,無相依性) |
crates/sn-net |
透過 UDP 的多人遊戲傳輸:連線、可靠和僅最新通道;用於測試的模擬網路 |
crates/sn-session |
無通訊端的多人遊戲邏輯:伺服器(加入、時鐘、事件順序、檢查)、用戶端(時鐘同步、繪製其他玩家)和共享世界狀態 |
apps/sn-inspect |
命令列檢查器和驗證器 |
apps/sn-client |
桌面用戶端(Bevy) |
apps/sn-server |
無介面多人遊戲伺服器(實驗性):讀取主機的安裝、在 UDP 上監聽 |
docs/ |
設計、路線圖、檔案格式筆記 |
用戶端控制
按住滑鼠右鍵(或按 M)來環顧四周。WASD 移動,Q/E 向
下/向上,Shift 為快速,滑鼠滾輪變更速度。
授權條款
我們的程式碼採用雙重授權,可依你的選擇使用 MIT 或
Apache-2.0。Subnautica 及其資產
屬於其擁有者,不屬於此專案的一部分。
致謝
我們學習的專案(閱讀,而非複製):Nitrox、
Subnautica-TerrainPatcher、UnityPy、AssetStudio、OpenMW、hl2-rs、benilla、
gang-beasts-rust,以及 AI Game Modding Guides。
授權與來源聲明
原始 README 與翻譯沿用 MIT 授權;本次修改為繁中翻譯、連結與排版調整。可修改的 Markdown、原始 README、LICENSE 與 NOTICE 收錄於頂部文件包。原作遊戲內容與商標不因此獲得授權。
LICENSE-APACHE
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
LICENSE-MIT
MIT License
Copyright (c) 2026 The subnautica-rs contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

評論
…