MarsChemLab 现已升级为一套高拟真的火星基地数字孪生终端。本系统超越了简单的“输入-输出”模拟,引入了双系统耦合(生存+能源)、资源博弈(氧气分配)和多重安全逻辑。玩家需要像火星任务指挥官一样,在有限的资源极限下寻求动态平衡。
通过集成 智谱 AI (GLM-4) 复刻的 MOSS 人格,系统不仅模拟化学与物理过程,还实时监控决策风险,提供冷峻的生存概率评估。
核心任务:在有限的条件下,平衡“呼吸”与“水循环”的需求。
- 作用: 设置游戏的“难度系数”。
-
原理: 决定了
$CO_2$ 产生量(作为污染源)和 最低呼吸氧气需求。 -
代码逻辑:
Total_CO2 = Crew * 40g。
- 作用: 核心化学反应物。
-
原理: 限制性反应物 (Limiting Reagent)。投入量必须根据
$CO_2$ 量计算。- 太少
$\rightarrow$ $CO_2$ 吸收不完$\rightarrow$ 中毒。 - 太多
$\rightarrow$ 造成浪费$\rightarrow$ 粉尘危害 (Alkali Dust Hazard)。
- 太少
- 方程式: $$ 2Na_2O_2 + 2CO_2 \xrightarrow{H_2O} 2Na_2CO_3 + O_2 $$
- 作用: 资源分配策略。决定把多少氧气分给污水处理系统。
-
原理: 污水处理需要好氧细菌或直接氧化,必须通入氧气(曝气)。
- 分流 0%
$\rightarrow$ 污水没法处理$\rightarrow$ 水污染报警。 - 分流 100%
$\rightarrow$ 宇航员没气吸$\rightarrow$ 窒息报警。
- 分流 0%
- 教学点: 演示资源稀缺时的博弈论。
- 作用: 控制 反应速率 (Kinetics)。
-
原理: 固气反应需要水蒸气作为介质/催化剂。
- 湿度 < 20%
$\rightarrow$ 反应几乎停止。 - 湿度 > 60%
$\rightarrow$ 反应过快,放热失控$\rightarrow$ 爆炸。
- 湿度 < 20%
-
代码逻辑: 使用
Mathf.Lerp线性插值计算反应效率Rate_K。
- 作用: 系统的安全指标。
- 原理: 该反应是放热反应。温度 = 基础室温 + (产氧量 × 反应速率 × 放热系数)。
核心任务:利用化学能发电,并合成增量水源。
- 作用: 决定发电功率的上限。
- 原理: 燃料电池反应 $$ 2H_2 + O_2 \rightarrow 2H_2O $$
- 作用: 显示从上一关(生存页)带过来的“氧气存折”。
- 原理: 木桶效应。如果氧气很少,哪怕氢气拉满,也发不了多少电。
- Recycled Water (循环水):
- 来源: 生存页。
- 算法:
Crew * 500mL * 净化效率。 - 注意: 如果你在生存页不仅氧气够,而且没报水污染,这里的回收率就是 95%,否则很低。
- Synthesized Water (合成水):
- 来源: 燃料电池。
- 算法:
消耗的氧气 * 1.125(根据摩尔质量 32:36 计算)。
请严格按照这 6 个步骤 进行演示,能覆盖所有代码分支,逻辑严密,效果炸裂。
目的是展示:有药也没用,必须有环境条件。
- Page: LIFE SUPPORT
- 设置:
- Crew: 4
- Na2O2: 600g (正常)
- Aeration: 40% (正常)
- Humidity: 0% (拉到最左)
- 点击 INITIATE
- 结果:
- Temp: ~25°C (没反应)
- Status: FAILURE: ATMOSPHERE TOO DRY
- 话术: “大家看,虽然原料充足,但没有水汽作为催化媒介,反应无法启动。”
目的是展示:视觉冲击和安全性教育。
- Page: LIFE SUPPORT
- 设置:
- Crew: 10 (拉满)
- Na2O2: 1000g (加量)
- Aeration: 40%
- Humidity: 100% (拉满,全速反应)
- 点击 INITIATE
- 结果:
- Temp: > 200°C (甚至更高)
- Status: CRITICAL: THERMAL RUNAWAY
- MOSS: 尖叫报警。
- 话术: “在高负荷下,如果我们不控制反应速率,瞬间放热会导致反应堆熔毁。”
目的是展示:好氧曝气对水处理的重要性。
- Page: LIFE SUPPORT
- 设置:
- Crew: 4
- Na2O2: 600g
- Humidity: 50% (调回正常)
- Aeration: 0% (一点氧气都不给水处理)
- 点击 INITIATE
- 结果:
- Status: WARNING: WATER CONTAMINATION HIGH
- MOSS: 警告水循环系统污染。
- 话术: “如果我们只顾呼吸,不分流氧气去处理污水(Aeration 0%),虽然没窒息,但基地的水循环系统因为缺氧曝气而崩溃了。”
目的是展示:资源分配的博弈。
- Page: LIFE SUPPORT
- 设置:
- Aeration: 100% (全拿去洗澡了)
- 其他不变
- 点击 INITIATE
- 结果:
- Status: DANGER: ASPHYXIATION RISK
- 话术: “反之,如果氧气全被占用于工业用途,宇航员将面临窒息风险。我们需要找到平衡点。”
目的是展示:科学计算后的最佳状态,为下一关做准备。
- Page: LIFE SUPPORT
- 设置:
- Aeration: 30% - 40% (黄金区间)
- 其他不变 (Crew 4, Na2O2 600, Humid 50)
- 点击 INITIATE
- 结果:
- Status: STABLE
- MOSS: "Survival Probability: 99%"
- 注意: 此时你产生了几十克氧气,这也是下一关的门票。
目的是展示:跨学科融合和双轨制水保障。
- 操作: 保持测试 5 的 STABLE 状态,点击顶部 FUEL CELL 按钮。
- 观察 1 (进入页面瞬间):
RECYCLED WATER: 1900 mL (这是刚才测试 5 净化成功的存量)SYNTHESIZED WATER: 0 mL (还没发电)- 话术:“看,这是我们刚才通过化学手段净化的循环水。”
- 操作 2:
- H2 Flow: 拉到 50
- 点击 GENERATE POWER
- 观察 2 (结果):
SYNTHESIZED WATER: 变成了 ~50-100 mL (取决于你的氧气量)- Status: GENERATING POWER: xxx kW
- 话术:“启动燃料电池后,我们不仅获得了电力,还通过电化学反应额外合成了纯净水,补充了循环损耗。”
- Unity 6 (6000.3.1f1) 或更高版本
- Git LFS (推荐)
- 克隆仓库:
git clone https://github.com/Mike-Zhuang/MarsChemLab.git - 导入项目: 使用 Unity Hub 打开目录。
- 🔑 配置 API Key (必须):
- 本项目依赖 ZhipuAI 提供 MOSS 的智能对话。
- 在
MarsChemLab/Assets/下创建api_key.txt。 - 粘贴你的 Key (不含空格换行)。
如果你想生成独立的 executable 运行:
- 在 Unity 中打开 File > Build Settings。
- 将 Scenes/SampleScene 添加到 "Scenes In Build"。
- 选择目标平台 (Windows/macOS)。
- 点击 Build 并选择输出目录(推荐
Mars_Windows_Build/)。
注意:本项目已包含最新的 Windows 构建版本,可直接在
Mars_Windows_Build/目录下运行体验。
-
为什么一直是红色报警?
- 检查是不是人数 (Crew) 太多了?人数越多,对氧气需求越大,如果不加大药量,怎么调都是错。建议演示时用 Crew = 4 最稳。
-
为什么 Recycled Water 是 0?
- 说明你在生存页最后一次点击
INITIATE时,状态是 WATER CONTAMINATION (水污染)。你必须在生存页看到 STABLE 后,再切过来,水才会被净化成功。
- 说明你在生存页最后一次点击
项目通过 UnityWebRequest 直接与 ZhipuAI 接口通信。核心提示词设计旨在模拟 MOSS (550W) 的人格特征:
- 绝对理性: 忽略人类情感,只关注数据与概率。
- 极简主义: 语言简练,直击要害。
- 标志性台词: "让人类永远保持理智确实是一种奢求。"
本项目采用 MIT License 许可证。