---
title: 元数据驱动的实例
description: 在 Polymerium 中，实例是一个描述——而不是文件夹副本。这彻底改变了你管理游戏的方式。
---

## 核心理念

大多数 Minecraft 启动器将实例视为一个装满文件的文件夹——游戏 JAR、模组、配置、库文件，所有东西都复制到一个地方。如果你有 5 个实例都使用了同一个 Sodium 模组，你的磁盘上就会有 5 份 Sodium 的副本。

Polymerium 做了一些不同的设计：**实例是一个元数据文件。**

你的实例是一个 `profile.json` 描述文件，它描述了你的游戏应该包含什么：

```json
{
  "version": "1.21.4",
  "loader": "fabric:0.16.0",
  "packages": [
    { "purl": "modrinth:sodium", "enabled": true },
    { "purl": "modrinth:iris", "enabled": true },
    { "purl": "modrinth:fabric-api", "enabled": true }
  ]
}
```

实际的游戏目录是**在部署时按需构建**的。文件通过符号链接从共享缓存中引入——从不重复存储。

## 这在实践中意味着什么

### 切换加载器是即时的

想试试 Fabric 而不是 Forge？修改加载器字段，重新部署。无需重新下载，无需等待。新加载器的库文件会被链接到游戏目录中。

### 添加模组不会复制文件

当你安装 Sodium 时，文件只会下载一次到共享缓存中。如果另一个实例已经有它，Polymerium 只需要创建一个符号链接。零额外磁盘占用。

### 你的实例是可移植的

因为它只是 JSON 加上一些配置文件，你的整个实例可以通过 Git 进行版本控制、与朋友分享，或导出为模组包。

### 没有什么是永久的

游戏目录（`build/`）是一个构建产物。你可以随时删除它并重新部署。对于那些你无法承受丢失的文件——比如 `options.txt` 或你的存档——将它们移动到 `persist/` 目录中。Polymerium 在重置或更新期间永远不会触碰 `persist/`。详情请参见[四层目录 →](/docs/concepts/four-layers#persist---用户管理的持久层)。

## 工作流程

```
编辑元数据（添加模组、更改版本、切换加载器）
        ↓
    部署
        ↓
  游戏目录从缓存 + 元数据重建
        ↓
    启动
```

这是一个按需读取构建的模型。你的元数据是事实的来源；游戏目录是输出。

## 对比

| 操作 | 传统启动器 | Polymerium |
|------|-----------|------------|
| 添加模组 | 下载 + 复制到实例文件夹 | 下载到缓存，符号链接到 build |
| 切换加载器 | 删除旧文件，重新下载所有内容 | 更新元数据，重新部署 |
| 更新模组包版本 | 创建新副本（磁盘使用量翻倍） | 原地切换版本，重新部署 |
| 分享实例 | 压缩整个文件夹 | 分享 `profile.json` |
| 5 个相同实例的磁盘占用 | 5 倍模组文件 | 1 倍模组文件 |

## 了解更多

- [四层目录 →](/docs/concepts/four-layers) —— 了解实例内的文件是如何组织的
- [部署流水线 →](/docs/concepts/deploy-explained) —— 看看当你点击"部署"时到底发生了什么